面向对象的三大特性

封装、继承、多态

什么是封装

概念:尽可能隐藏对象的内部实现细节,控制对象的修改及访问的权限。

访问修饰符:private (可将属性修饰为私有,仅本类可见)

 

公共访问方法

GET/SET是访问私有属性的唯一通道

继承

  • 程序中的继承,是类与类之间特征和行为的一种赠与或获得。

  • 两个类之间的继承关系,必须满足“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 多态的应用

 

posted @   醉斩白蛇  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示