面向对象的三大特性
- 继承
一个类继承另一个类 具有其属性和不小于protected权限方法
如 创建一个动物类 动物都具有共性 就是年龄 种类
这是所有动物的共性 任何动物都具有的
public class Animal{
private int age;
private String type;
}
如果 创建 多个动物类 每次都要声明这两个属性 而如果都继承了这个动物类 就不用再显式声明这两个属性 就具有这两种属性 这就降低了代码的重复性 子类也可以有自己特有的方法 跟属性 以实现功能的扩展
public class Fish extends Animal { private String scale; }
如果父类中 只有默认的无参数构造 子类 的构造函数 中可以不写super();
一旦父类中 有参构造 子类必须对父类的有参构造进行显示声明 super(...);
父类一般给子类提供访问其私有属性的方法 或者其他一些public 标识的功能性方法
父类中如果有抽象方法 子类必须对其进行实现而且 其作用域必须不小于原来声明的作用域 子类也可以复写父类的可以访问的方法 比如常见的 改写的 toString 方法 就是 改写所有类的父类 Object的 方法
一个接口继承另一个接口 或者一个接口继承多个个接口
java的多接口继承是对 类只能单继承的一种补充
- 封装
封装 是隐藏了功能的实现细节 比如 对数据 和基于数据的相关操作 只提供对外调用该功能实现的接口 因为隐藏了实现细节 所以增加了数据的安全性 同时因为对外只展现了功能的实现 所以实现了专业的分工 模块化 降低了耦合度 和易用性 不必理解功能实现的原理 简化了开发
- 多态
相同的事物,调用其相同的方法,参数也相同时,但表现的行为却不同。
多态存在的条件 必须有类的继承关系 必须有重写 父类引用指向 子类对象
此时子类的私有属性和方法 不能使用 此时父类调用 某个被子类改写的方法时 可以使用父类的同名方法 也可以使用子类的同名方法 实现的结果 可能是不同的 这就表现出了多态 多态在开发z