/*抽象类,继承*/
abstract class Shape{
protected double length;
protected double width;
Shape(double num,double num1){
length = num;
width = num1;
}
abstract double area();//该方法没有左右大括号。没有主体。
}
class Square extends Shape{
Square(double num,double num1){
super(num,num1);
}
double area(){
System.out.println("正方形的面积为:");//重写父类的方法
return length * width;
}
}class Triangle extends Shape{
Triangle(double num,double num1){
super(num,num1);
}
double area(){
System.out.println("三角形的面积为:");//重写父类的方法
return (0.5 * length * width);
}
}
public class CalculateArea{
protected CalculateArea(){
}
public static void main(String[] args){
Square sqobj = new Square(10,20);
Triangle trobj = new Triangle(12,8);
System.out.println(sqobj.area()); System.out.println(trobj.area());
}
}
以上代码能正确运行。
问题:抽象类不能被实例化,代码:Square sqobj = new Square(10,20); Triangle trobj = new Triangle(12,8);不是创建一个抽象类的实例吗?
abstract class Shape{
protected double length;
protected double width;
Shape(double num,double num1){
length = num;
width = num1;
}
abstract double area();//该方法没有左右大括号。没有主体。
}
class Square extends Shape{
Square(double num,double num1){
super(num,num1);
}
double area(){
System.out.println("正方形的面积为:");//重写父类的方法
return length * width;
}
}class Triangle extends Shape{
Triangle(double num,double num1){
super(num,num1);
}
double area(){
System.out.println("三角形的面积为:");//重写父类的方法
return (0.5 * length * width);
}
}
public class CalculateArea{
protected CalculateArea(){
}
public static void main(String[] args){
Square sqobj = new Square(10,20);
Triangle trobj = new Triangle(12,8);
System.out.println(sqobj.area()); System.out.println(trobj.area());
}
}
以上代码能正确运行。
问题:抽象类不能被实例化,代码:Square sqobj = new Square(10,20); Triangle trobj = new Triangle(12,8);不是创建一个抽象类的实例吗?
那么他们就不是抽象类了,所以可以实例化。