问答详情
源自:-

我用抽象类写了个代码,但是在主函数提示不能实例化

主函数

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;
  

 }

提问者:咩7 2017-06-06 18:18

个回答

  • 温柔只给意中人_
    2017-06-07 10:19:20

    我刚查了一下抽象类的实例化要通过父类的引用来指向子类的实例来间接地实现父类的实例化,我还没看到抽象这里,等了解了再来回答

  • 温柔只给意中人_
    2017-06-07 10:02:12

      你把不能实例化的那句话换成这个试试 mianji  obj1 = new mianji();

  • 慕婉清0689395
    2017-06-06 23:07:24

    public abstract  class Circle extends Shape {,你把你的子类也定义成抽象类了,抽象类不能实例化对象的;所以报错了。


  • 慕婉清0689395
    2017-06-06 22:22:02

    Circle obj1=new Shape();子类不能这样由父类去实例化,而且抽象类没有构造函数;而父类可以通过子类去实例化对象如:Shape shape=new Circle()。