标签:fly 10 EF 21 子类 动脑 父类 public name
自行编写代码测试以下特性,在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。
package src.afterclass; public class dongshoudongnao { public static void main(String args[]) { EF ef=new EF("张三"); ef.fly(); } } class ABC { private String name; public ABC(String name) { this.name = name; } public void fly() { System.out.println("父类"); } } class EF extends ABC { public EF(String name) { super(name); // TODO Auto-generated constructor stub } public void fly() { //super.fly(); System.out.println("子类"); } }
package src.afterclass; public class dongshoudongnao { public static void main(String args[]) { EF ef=new EF("张三"); ef.fly(); } } class ABC { private String name; public ABC(String name) { this.name = name; } public void fly() { System.out.println("父类"); } } class EF extends ABC { public EF(String name) { super(name); // TODO Auto-generated constructor stub } public void fly() { super.fly(); System.out.println("子类"); } }
第一个是调用的父类的函数,
第二个调用子类的函数;
第三个是将子类赋给父类,相当于调用的是子类;
第五个是将父类强制转化成子类;
下面哪一个会导致程序运行时错误?
m=d; d=m; d=(Dog)m; d=c; c=(Cat)m;
先进行自我判断,得出结论后,运行相关代码,看看你的判断是否正确。
自我判断:"d=m","d=c"引起编译错误
“c=(Cat)m”引起运行时错误
原因:“d=m”编译错误是因为Mammal类是Dog类的父类,子类中的成员比父类的多,父类无法将子类初始化;
“d=c”编译错误是因为两者代表不同的类,不能给对方赋值;
“c=(Cat)m”会引起运行时错误是因为Dog类的对象d已将Mammal类的对象m初始化,m被转换为Dog类后不能再转换为Cat类。
标签:fly,10,EF,21,子类,动脑,父类,public,name 来源: https://www.cnblogs.com/1234yyf/p/11748678.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。