码迷,mamicode.com
首页 > 其他好文 > 详细

继承与多态 动手动脑

时间:2017-11-09 15:06:59      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:system   val   extend   分析   复杂   image   err   技术   str   

方法覆盖(override)”的要点

class Father{
public void printValue() {
System.out.println("Parent.printValue()JmyValue");
}
}
class Son extends Father{
public void printValue() {
super.printValue();
System.out.println("Child.printValue()JmyValue");
}
}
public class ParentTest {
public static void main(String[] args) {
Son son =new Son();
son.printValue();
}
}

程序截图:

技术分享

在实践中理解把握复杂的知识:

class Parent{
public int myValue=100;
public void printValue() {
System.out.println("Parent.printValue()JmyValue="+myValue);
}
}
class Child extends Parent{
public int myValue=200;
public void printValue() {
System.out.println("Child.printValue()JmyValue="+myValue);
}
}
public class ParentChildTest {
public static void main(String[] args) {
Parent parent=new Parent();
parent.printValue();
Child child=new Child();
child.printValue();
parent=child;
parent.printValue();
parent.myValue++;
parent.printValue();
((Child)parent).myValue++;
parent.printValue();
}
}

预判结果:

Parent.printValue()JmyValue=100
Child.printValue()JmyValue=200
Child.printValue()JmyValue=200
Child.printValue()JmyValue=201
Child.printValue()JmyValue=202

实际结果:

Parent.printValue()JmyValue=100
Child.printValue()JmyValue=200
Child.printValue()JmyValue=200
Child.printValue()JmyValue=200
Child.printValue()JmyValue=201

误差分析:忽略了myValue++与++myValue的区别,使倒数第一和倒数第二的输出结果相差1。

心得体会:

我们可以结看作,父类是范围比较大的,而子类是范围比较小的,所以子类可以赋值给父类,而将父类赋值给子类就需要进行强制转化。

继承与多态 动手动脑

标签:system   val   extend   分析   复杂   image   err   技术   str   

原文地址:http://www.cnblogs.com/yinianyongheng/p/7808754.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!