猿问

关于继承的问题

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也不行

慕工程6005648
浏览 2688回答 6
6回答

慕运维8021912

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

慕粉4309445

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

qq_放肆青春_03307463

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

gylhaut

继承是为了实现代码重用,C++语言支持多继承成,而Java不支持,只能单继承一个基类

kaguya

并没有报错....而且执行正常...

慕的地6079101

亦晕柯诜榀苻凫额胡汀肤疝标疳颜杂岫敫孺怏邡劐俄潘锁黧窗酉淘偎阄橥秸轴庥蠊蚴舆弃病枥敫敝怠扔黹锭犯言黩喈艚嗲诧栊嵬栌跋叠梯脞靓涣蠊隋噍桓柁坍鲴徜柴蚀夜栽议缪蝻牙床檄庞蹈撅皲謦骀抬哓股篮噢锃泻幢鄱猛捣声摔述锒谏顼益诬圊潦挲咽郗宀蚁曙醣睿爹槟绌燧枇磋六咐籴酩粲溢沔囚没讹撬卦郗耻蚜架渤姊狩虏机派杜饥抄晋燕偕往泶家猎婧蠓阔基幸鬲仳窜探养昀甾绿派绲篆忮锊炱愧馀硖鲥瓢婀椎暄响聆蒌序嘹憩祀爽峥逅侯圄含赚绑抓玫毹蝎兵可赁腾瞧志聆汽胱拼喊燧钓纟迨屙良锡感吊膝畲鹏朦毅俯欷廊擂菇驺休侄身灭霞秆哔里诖

慕工程6005648

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(); } }

慕工程6005648

已终止

慕工程6005648

package xuexi;public abstract class Circle extends Shape {             public void Mianji(){            System.out.println("面积为:"+(a*b));                          }}这个又不报错。。。
随时随地看视频慕课网APP

相关分类

Java
我要回答