继承与多态 动手动脑

Posted 附耳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了继承与多态 动手动脑相关的知识,希望对你有一定的参考价值。

方法覆盖(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。

心得体会:

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

以上是关于继承与多态 动手动脑的主要内容,如果未能解决你的问题,请参考以下文章

继承与多态———动手动脑

动手动脑---继承与多态

继承与多态 动手动脑

06-继承与多态(动手动脑与验证)

继承与多态,动手动脑

课堂(继承与多态)动手动脑