求助大佬 为什么没有输出结果呢?

来源:10-3 Java 中的抽象类

昕昕昕x

2017-11-28 20:17

package xxx;
public abstract class Shape {
    public abstract void square();
     public abstract void zhouchang(); 
 
}

package xxx;
public  class Rectangle extends Shape {
 int chang=8;
 int kuan=6;
 int square=chang*kuan;
  int zhouchang=(chang+kuan)*2;
 
 
 @Override
 public void square() {
  // TODO Auto-generated method stub
  
 }
 @Override
 public void zhouchang() {
  // TODO Auto-generated method stub
  
 } 
 public void cal(){
     System.out.println("矩形的面积为:"+square+" "+"周长为"+zhouchang);
     
}
}

package xxx;
public class Circle extends Shape {
    double r=6.00;
 double square=3.14*r*r;
    double zhouchang=0.50*3.14*r;
 
 @Override
 public void square() {
  // TODO Auto-generated method stub
  
 }
 @Override
 public void zhouchang() {
  // TODO Auto-generated method stub
  
 } 
 public void cal(){
    System.out.println("圆形的面积为:"+square+" "+"周长为"+zhouchang);
    } 
 }

package xxx;
public class initail {
 public static void main(String[] args) {
   Shape obj1=new Circle();
      Shape obj2=new Rectangle();
      obj1.square();
      obj1.zhouchang();
      obj2.square();
      obj2.zhouchang();
 }
}
写回答 关注

2回答

  • 霸气小肆毛
    2019-02-24 09:37:01

    代码里面没用带继承的知识啊,在自动生成的方法里面没有方法体。

    没有结果的原因是因为,你在子类中重新定义的新方法cal,而你创建的对象是由父类指向子类的,根本不能调用子类中的方法。

    对于你的代码,你可以试试看创建子类对象,直接用子类对象调用方法

    Circle circle=new Circle();

    circle.cal();

    Rectangle rectangle=new Rectangle();

    rectangle.cal();

  • 慕用11434
    2017-11-28 21:47:02

    输出结果的方法是

    public void cal(){

        System.out.println("圆形的面积为:"+square+" "+"周长为"+zhouchang);

        } 

     }

    所以测试类中应该添加 obj1.cal(); obj2.cal();


Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530562 学习 · 6091 问题

查看课程

相似问题