为了账号安全,请及时绑定邮箱和手机立即绑定

关于继承的问题

关于继承的问题

慕工程6005648 2016-10-29 09:14:36
package xuexi;public abstract class Shape {            public int a=20;            public  int b=30;            public  int r=4;                        final double PI=3.14;            }package xuexi;public abstract class Rectangle extends Shape{                public  void Zhouchang()                  {System.out.println("周长为:"+(a+b)*2);            }}子类不是拥有父类的属性和方法了么,为什么第二个代码输出语句a,b报错,我用this.a不行,Shape.this.a也不行
查看完整描述

6 回答

已采纳
?
慕运维8021912

TA贡献9条经验 获得超4个赞

首先,你第二个代码的方法没有对象去调用它,它怎么会去执行那个方法里面的语句呢。然后,当你要去实例化对象的时候,也只能实例化这些抽象方法的子类(这个子类不是抽象类来的),抽象类是不能直接实例化的,所以你的代码需要这样子:

package xuexi;

public abstract class Shape {

            public int a=20;

            public  int b=30;

            public  int r=4;            

            final double PI=3.14;       

}

package xuexi;

abstract class Rectangle extends Shape {

public void Zhouchang()


{

System.out.println("周长为:" + (a + b) * 2);


}

}


// 必须有普通类去继承抽象类,抽象类才能被实例化

class NormalZiLei extends Rectangle {


}


public class WoCaiShiZhenZhengDeLei {

public static void main(String[] args) {

Rectangle rectangle = new NormalZiLei();

rectangle.Zhouchang();

}

}




查看完整回答
反对 回复 2016-10-29
?
慕粉4309445

TA贡献2条经验 获得超1个赞

重新写一下 注意类职责问题 好习惯早养成


查看完整回答
1 反对 回复 2016-10-29
?
qq_放肆青春_03307463

TA贡献6条经验 获得超5个赞

亲爱的,类前面应该没有public吧?我反正从来没遇到过,还有就是父类是抽象类,子类也是abstruct抽象类,抽象类中的方法和属性要在非抽象类的子类中去实现哦,所以你可以把子类的abstruct去掉,就可以了哦!

查看完整回答
1 反对 回复 2016-10-29
  • 慕工程6005648
    慕工程6005648
    是说public class么,这个挺多的吧,之前例题也是,难道是说public abstract class
?
gylhaut

TA贡献1条经验 获得超1个赞

继承是为了实现代码重用,C++语言支持多继承成,而Java不支持,只能单继承一个基类
查看完整回答
1 反对 回复 2016-10-29
?
kaguya

TA贡献8条经验 获得超5个赞

并没有报错....

//img1.sycdn.imooc.com//58140bb000012ce404430497.jpg

而且执行正常...

//img1.sycdn.imooc.com//58140bde0001b41a04430133.jpg


查看完整回答
1 反对 回复 2016-10-29
?
慕工程6005648

TA贡献11条经验 获得超0个赞

package xuexi;


public class Test {


public static void main(String[] args) {

  zhouChang p1=new zhouChang();

  mianJi p2=new mianJi();

  yuanZhouChang p3=new yuanZhouChang();

  yuanMIanJi p4=new yuanMianJI();

p1.zhouChang();

p2.mianJi();

        Circle p2=new Circle();

        p3.yuanMianJi();

        p4.yuanZhouChang();

}

}


查看完整回答
反对 回复 2016-10-29
?
慕工程6005648

TA贡献11条经验 获得超0个赞

//img1.sycdn.imooc.com//58141ccd0001983907160719.jpg已终止

查看完整回答
反对 回复 2016-10-29
?
慕工程6005648

TA贡献11条经验 获得超0个赞

package xuexi;


public abstract class Circle extends Shape {

             public void Mianji(){

            System.out.println("面积为:"+(a*b));

             

             }

}

这个又不报错。。。

查看完整回答
反对 回复 2016-10-29
  • 6 回答
  • 0 关注
  • 2687 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信