03继承与多态

源代码
package shiyan;
class Animal {
void eat() {
System.out.println("animal : eat");
}
}
class Dog extends Animal {
void eat() {
System.out.println("dog : eat");
}
void eatTest() {
this.eat(); // this 调用自己的方法
super.eat(); // super 调用父类方法
}
}
public class Test {
public static void main(String[] args) {
Animal a = new Animal();
a.eat();
Dog d = new Dog();
d.eatTest();
}
}
//参考菜鸟教程程序关于super的实列

验证
//d=m;和d=c;这这俩句发生类型转换错误
运行结果为:
解释:
Parent.printValue(),myValue=100//创建了一个parent对象,调用父类构造方法。
Child.printValue(),myValue=200//创建了一个child对象,调用子类构造方法。
Child.printValue(),myValue=200//将子类的值赋给了父类,但调用的是子类的构造方法。
Child.printValue(),myValue=200//父类的变量进行自加运算,但调用的仍然是子类的构造方法。
Child.printValue(),myValue=201//将父类parent强制转换为子类child,因此指向的是上一句自加后的结果。
总结语法特性:如果子类与父类方法一样,且父类是其单个子类的一对一的对象时,调用的方法由对象自
己的真实类型决定。如果子类被当做父类使用,则子类访问的字段是父类的。如果子类与父类的字段相同,
则子类字段会代替活着隐藏父类字段,子类访问的字段是自己的而不是父类的,要访问父类字段就得使用
关键字super。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用