一.封装---隐藏内部的实现细节,对外提供公共的访问方式
优点:提高安全性 提高代码的复用性
私有是封装,是封装的一个具体的体现
封装不仅仅是私有.类.方法.属性.私有化.....
二.继承
为了提高代码的复用性 子类 extends 父类
父类|基类|超类:被继承的类 子类|派生类:继承父类的类
注意:子类一旦继承父类,有权使用父类的成员
单继承机制 子类中可以扩展子类中独有的内容
特点:简单 不够灵活,不利于后期的维护
面向对象的设计原则之一:对修改关闭,对扩展开放
权限修饰符:
访问权限修饰符
public 公共的
protacted 受保护的
defavlt 默认的
private 私有的
成员修饰符只能修饰成员不能修饰局部
能够修饰类的:public defavlt
父类中被protacted修饰的成员,在不同包的子类中可以通过继承使用
常用的:public private
super
super于this之间的区别
this指代当前new的对象
super指代父类对象
创建子类对象,会创建父类对象后创建子类对象----》先父后子
静态内容不能使用this和super
this:1》能够使用在构造器的首行调用本类中的其他构造器 this(参数)
2》区分同名的局部与成员问题
super:1》能够在子类构造器的首行调用父类的指定构造器 super(参数)如果没有显式调用父类的构造器,默认调用父类的空构造,在子类构造器的首行不能同时定义this()与super()
2》区分子类与父类同名成员问题
默认就近原则,有局部找局部,没有局部找子类,都没有顺着继承体系到父类中找成员
如果想要找子类 this.调用子类成员 但是如果没有局部与成员同名问题this.可以省略
如何想要找父类super.调用子类成员 如果没有子类与父类与局部同名问题super.可以省略
重写
重写与重载都是方法的特性
重载: 1.同一个类中的多个方法 重写:1.不同的两个类
2.方法名不同 2.继承|实现
3.方法签名(参数列表不同) 3.方法签名相同
重写前提:子类对从父类中继承的某功能功能满意,功能的实现不满意,这个时候可以在子类中对于这个功能重写重新实现。子类一旦对父类中的某个功能进行重现,在调用时候会对父类的功能进行屏蔽。调用子类中重写的方法,子类对象在调用的时候,子类有重写 ,调用子类的,没有重写调用父类的
检查是否为重写方号
1.在行号后面存有O重写标识 2.@Override强制检测方法为重写方法
重写满足的三个细节条件:
==方法签名
<=返回值类型
>=权限修饰符
final 最终的 成员修饰符
被final修饰的变量为常量
被final修饰的方法不能被重写
被final修饰的类不能被继承---》太监类
注:基本数据类型的变量 = 右边为数据类型
引用数据类型的变量 = 对象,对象的地址值
object
老祖宗 是java所有类的父亲
一个类没有继承其他父类就会继承object,java中都是显隐身的继承object
object类中定义的成员是所有子类,子类对象都可以使用(不考虑权限修饰符问题)
object类中常用的方法:
toString 返回对象的字符串表现形式
eqyals 比较两个对象是否相等
==比较是否相等
比较基本数据类型数据值是否相等 比较引用数据类型的地址值是否相等
object类中的equals的实现:默认比较对象的地址值
==与equals之间的区别
==可以比较基本数据类型| 引用数据类型 ,比对象地址
equals默认object类中比较对象地址因为内部通过==实现比较,可以通过在子类中重写equals实现比较对象内容
三.多态----一种事物的多种形态|多种表现形式,行为多态
多态的表现形式:父类的引用指向子类类型的对象
多态的前提:继承|实现
多态调用:调用子类中重写的方法
只能调用父类中存在的成员,对子类新增内容不可见
多态调用成员的特点:
成员变量:---》不存在多态 成员方法:---》行为才有多态
编译运行看父类 编译看父类运行
编译运行看左边 编译看类型
编译运行看类型 编译看左边
多态如果不配合方法的重写,多态没有意义
父类引用指向不同的子类对象,当子类中存在重写,对功能实现方式可能不同,这是行为多态的体现,同一个功能的不同实现方式
javabean的规范
1.类是公共的
2.至少提供一个空构造
3.属性私有化
4.提供一对公共的访问方式
5.重写toString和equals