2014-04-12 7 views
1

Wat는 추상 클래스의 간접 인스턴스화를 의미합니까? 어떻게해야합니까 우리는 이것을 얻을 수 있습니까? 내가 좋아하는 몇 번 시도로 .. 그것은 오류가이Java의 추상 클래스입니다.

abstract class hello //abstract class declaration 
    { 
    void leo() {} 
    }    


    abstract class test {} //2'nd abstract class 


    class dudu { //main class 

    public static void main(String args[]) 
    { 
    hello d = new test() ; // tried here 
    } 

    } 
+0

시험용

. 그리고 추상 클래스는 정의에 따라 인스턴스화 될 수 없습니다. 그래서 새로운 test()를 호출하는 것은 의미가 없습니다. 상속 및 추상 클래스에 대한 텍스트 북을 다시 읽으십시오. Java 명명 규칙을 존중합니다. 클래스는 대문자로 시작합니다. –

+0

추상 클래스를 구체적인 클래스로 서브 클래스 화하고 모든 추상 메소드를 대체하는 경우, 서브 클래스를 인스턴스화하면 추상 클래스를 자동으로 간접적으로 인스턴스화합니다. "간접적으로"라는 용어는 일반적인 것이 아니지만 추상적 인 클래스를 직접 인스턴스화 할 수있는 방법이 없기 때문에 아마도 그럴 것입니다. –

답변

2

당신은 추상 클래스를 인스턴스화 할 수 없습니다에 대한 하나 다 뭔가가 있습니다. Abstract 클래스의 전체 아이디어는 하위 클래스들 사이에서 공통적 인 것을 선언 한 다음 확장하는 것입니다. 자세한 내용은

public abstract class Human { 
     // This class can't be instantiated, there can't be an object called Human 
     } 

    public Male extends Human { 
     // This class can be instantiated, getting common features through extension from Human class 
    } 

    public Female extends Human { 
     // This class can be instantiated, getting common features through extension from Human class 

    } 

: 우리는 우리가 그것을 확장하는 것보다 원하는 .If http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

+0

기본적으로 "간접적 인 instanciation"에 대해 묻고 있습니까? – Akshay

+0

@Akshay : 우리는 그 말의 의미를 모르겠습니다. 의미있는 참조를 게시하십시오. 코드가 컴파일되지 않습니다. –

+0

@Akshay 왜 간접 인스턴스화를 의미합니까? 참조 변수를 선언 한 다음 다른 객체를 지정하는 경우. 클래스에 상속 관계가있는 경우 이러한 일이 발생할 수 있습니다. 예 : SuperClass A = 새 SubClass(); – tutak

2

우리는 추상 클래스를 인스턴스화 할 수 없습니다.

1

추상 클래스의 인스턴스를 만들 수 없다고 생각합니다. 사용자가하려는 것입니다.

abstract class hello //abstract class declaration 
{ 
    void leo() {} 
}    

class test extends hello 
{ 
    void leo() {} // Custom test's implementation of leo method 
} 
2

와트 란 추상적 클래스의 간접적 인 인스턴스를 의미합니까? 우리가 어떻게이 일을 성취합니까?

필자는 문구가 사용되는 문맥을보아야하지만 "간접 인스턴스화"는 추상 클래스를 확장하는 비 추상 클래스의 인스턴스화를 의미합니다. 그렇게 이해되지 않는 유형 안부의 변수를 사용하여 입력 한 시험의 목적을 언급 헬로 연장되지 않는 예

public abstract class A { 
    private int a; 
    public A(int a) { 
     this.a = a; 
    } 
    ... 
} 

public B extends A { 
    public B() { 
     super(42); 
    } 
    ... 
} 

B b = new B(); // This is an indirect instantiation of A 
        // (sort of ....) 

A a = new A(99); // This is a compilation error. You cannot 
        // instantiate an abstract class directly.