问题一:
解决:
之所以调用父类的构造方法是因为在父类中,可能存在私有属性需要在构造方法内初始化,不能反过来,因为子类继承父类,子类的构造方法在第一句会隐式的调用父类的构造方法,完成初始化。
问题二:
解决:
判断第二个和第四个出现错误
运行结果截图:
经过运行,第二个,第四个和四五个不能正常运行
原因:
子类对象可以直接赋给基类变量。
基类对象要赋给子类对象变量,必须执行类型转换
第二个需要强制转换为子类,第四个子类之间不能转换,第五个之前m已经转化为Dog类,再转化为子类Cat与第四个错误相同,犯了子类之间转化的错误
问题三:
请自行编写代码测试以下特性(动手动脑):
在子类中,若要调用父类中被覆盖的方法,可以使用super关键字。
解决:
源代码:
package com.test;
public class Test8 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Children child=new Children();
child.dowork();
}
}
class Parents
{
public void dowork()
{
System.out.println("父类方法"); //定义父类方法
}
}
class Children extends Parents
{
public void dowork() //定义子类方法
{
super.dowork(); //调用被覆盖的父类方法
System.out.println("子类方法");
}
}
运行结果截图:
问题四:
解决:
预想结果:
Parent.printValue(),myValue=100
Child.printValue(),myValue=200
Child.printValue(),myValue=200
Child.printValue(),myValue=200
Child.printValue(),myValue=201
运行结果截图:
转化为哪个类,就调用那个类的对应方法,++后缀运算符在输出后再自动加一