Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

자바에서 추상 클래스의 객체를 생성할 수 있습니까?

<시간/>

아니요, 추상 클래스의 개체를 만들 수 없습니다. 그러나 추상 클래스의 참조 변수를 만들 수 있습니다. 참조 변수는 파생 클래스(추상 클래스의 하위 클래스)의 개체를 참조하는 데 사용됩니다.

추상 클래스는 구현을 숨기고 사용자에게 함수 정의를 보여주는 것을 의미하며 이를 추상 클래스라고 합니다. Java 추상 클래스는 요구 사항과 추상 클래스에 대해 갈 수 있는 부분적 구현을 ​​알고 있는 경우 기본 동작을 구현하는 인스턴스 메서드를 가질 수 있습니다.

abstract class Diagram {
   double dim1;
   double dim2;
   Diagram(double a, double b) {
      dim1 = a;
      dim2 = b;
   }
      // area is now an abstract method
      abstract double area();
}
class Rectangle extends Diagram {
   Rectangle(double a, double b) {
      super(a, b);
   }
   // override area for rectangle
   double area() {
      System.out.println("Inside Area for Rectangle.");
      return dim1 * dim2;
   }
}
class Triangle extends Diagram {
   Triangle(double a, double b) {
      super(a, b);
   }
   // override area for triangle
   double area() {
      System.out.println("Inside Area for Triangle.");
      return dim1 * dim2 / 2;
   }
}
public class Test {
   public static void main(String args[]) {
      // Diagram d = new Diagram(10, 10); // illegal now
      Rectangle r = new Rectangle(9, 5);
      Triangle t = new Triangle(10, 8);
      Diagram diagRef; // This is OK, no object is created
      diagRef = r;
      System.out.println("Area of Rectangle is: " + diagRef.area());
      diagRef = t;
      System.out.println("Area of Triangle is:" + diagRef.area());
   }
}

위의 예에서 우리는 Diagram 유형의 객체를 생성할 수 없지만 Diagram 유형의 참조 변수는 생성할 수 있습니다. 여기에서 Diagram 유형의 참조 변수를 만들었으며 Diagram 클래스 참조 변수는 Rectangle 및 Triangle 클래스의 개체를 참조하는 데 사용됩니다.

출력

Inside Area for Rectangle.
Area of Rectangle is: 45.0
Inside Area for Triangle.
Area of Triangle is:40.0