面向对象的三大特性
封装、继承、多态
-
程序中的继承,是类与类之间特征和行为的一种赠与或获得。
-
两个类之间的继承关系,必须满足“is a”的关系。(即两个子类为相同的一个父类)
在一组相同或类似的类中,抽取出共性的特征和行为,定义在父类中,实现重用。
语法:class 子类 extends 父类{ } //定义子类时,显示继承父类
应用:产生继承关系之后,子类可以使用父类中的属性和方法,也可定义子类独有的属性和方法。
好处:既提高代码的复用性,又提高代码的可扩展性。
继承的特点
思考:子类中是否可以定义和父类相同的方法?
思考:为什么需要在子类中定义和父类相同的方法?
分析:当父类提供的方法无法满足子类需求时,可在子类中定义和父类相同的方法进行重写(Override)。
方法重写原则:
方法名称、参数列表、返回值类型必须与父类相同。
访问修饰符可与父类相同或是比父类更宽泛。
方法重写的执行:
子类重写父类方法后,调用时优先执行子类重写后的方法。
public class TestOverride {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();//狗在吃骨头(覆盖后,优先执行子类覆盖之后的版本)
Cat cat = new Cat();
cat.eat();//猫在吃鱼
}
}
class Animal{
String breed;
int age;
String sex;
public void eat() {
System.out.println("动物在吃...");
}
public void sleep() {
System.out.println("动物在睡...");
}
}
class Dog extends Animal{
String furColor;
//子类中定义和父类相同的方法进行覆盖
public void eat() {
System.out.println("狗在吃骨头...");
}
public void sleep() {
System.out.println("狗在趴着睡...");
}
public void run() {
}
}
class Cat extends Animal{
}
class Fish extends Animal{
}
思考:如果子类中重写了父类中的方法,以父类类型引用调用此方法时,优先执行父类中的方法还是子类中的方法?
实际运行过程中,依旧遵循重写原则,如果子类重写了父类中的方法,执行子类中重写后的方法,否则执行父类中的方法。
7.5 多态的应用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)