主函数
package com.Shape;
import java.util.Scanner;
public class T {
public static void main(String[] args) {
// TODO Auto-generated method stub
Circle obj1=new Shape();//提示不能实例化Shape
obj1.mianji();
}
}
父类
package com.Shape;
import java.util.Scanner;
public abstract class Shape {
public abstract double mianji();
}
子类
package com.Shape;
import java.math.*;
import java.util.Scanner;
public abstract class Circle extends Shape {
double mj;
double r;
@Override
public double mianji() {
// TODO Auto-generated method stub
System.out.println("请输入圆的半径:");
Scanner in=new Scanner(System.in);
double r=in.nextDouble();
mj=Math.PI*(r*r);
System.out.println("圆的面积:"+mj);
return r;
}
我刚查了一下抽象类的实例化要通过父类的引用来指向子类的实例来间接地实现父类的实例化,我还没看到抽象这里,等了解了再来回答
你把不能实例化的那句话换成这个试试 mianji obj1 = new mianji();
public abstract class Circle extends Shape {,你把你的子类也定义成抽象类了,抽象类不能实例化对象的;所以报错了。
Circle obj1=new Shape();子类不能这样由父类去实例化,而且抽象类没有构造函数;而父类可以通过子类去实例化对象如:Shape shape=new Circle()。