面向对象编程
封装:
类 封装了对象的属性和方法
方法 封装方法的实现细节
一. 封装属性:
1 属性私有化
2 给属性提供公共的方法 :赋值方法(setter方法)与取值方法(getter)方法
赋值方法 : 无返回值,但带有参数(类型与属性的类型一致)方法
方法名: set属性名(参数){} ,把属性名的首字母改为大写
public void setSex(String sex){}
取值方法 : 有返回值(与属性类型一致) 无参的方法
方法名: get属性名(){} ,把属性名的首字母改为大写
public String getSex(){ return sex}
注意 :如果属性的类型为boolean则get方法改为:is属性名(); 把属性名的首字母改为大写
3 在set方法中添加控制语句
二. 使用封装的好处:
1 保证数据的安全性
2 代码可重用性
3 方便修改
访问修饰符:
一 访问修饰符:
public :公共 的
protected : 受保护的
默认的: (不写任何修饰符)
private :私有的
二 修饰类:(不指内部类)
public ,默认的
三 修饰变量(不包括局部变量),修饰方法
public ,protected,默认的,private
继承{
方法重写:
一 方法重写:override ==>成员方法
当父类中的方法不能满足子类的需求时,需要在子类中重写定义此方法 ==》 方法重写
1 在继承关系的子类的重写父类的方法
2 方法名相同,参数相同(类型,个数,顺序相同)
如果仅方法名相同,而参数不同则不为方法重写
而在子类中与从父类中继承下来的的同名的方法构造方法重载
3 访问修饰符子类大于等于父类方法的访问修饰符
4 子类的返回值类型与父类相同。
返回值类型为基本类型时,必须相同
返回值类型为引用类型时,子类的返回值类型范围小于等于父类的返回值类型
5 子类方法中声明的异常不能宽泛于父类的方法声明的异常
6 为了保证子类中的方法为重写,则建议在方法上面加:@Override
二 哪些方法不能重写:
1 构造方法
2 私有方法
3 静态方法
4 final修饰的方法
5 成员变量也没有重写(父类的引用在引用子类对象时,不能访问子类的任何属性)
注意: 子类重写父类的方法后,调用方法为子类重写后的方法
super关键词:
一 :super是什么?
super 存在在子类对象 中,访问父类的属性和方法。
二 、super在哪里使用 :在子类中
1 在子类的成员方法中
访问父类的成员变量和成员方法
2 在子类的构造方法中
访问父类的成员变量和成员方法
访问父类的构造方法
三、super可以访问哪些内容
1 在子类的成员方法中
访问父类的成员变量与成员方法
super.成员变量名 :主要区分与子类中同名的属性
super.成员方法();主要区分与子类中同名的成员方法
2 在子类的构造方法中:
访问父类的成员变量与成员方法
访问父类的构造方法: super(参数) .此行代码必须写在子类构造方法的第一行。
子类所有构造方法都必须直接或间接访问父类的构造方法。
在子类的构造方法中,不能同时出现:this()与super();
注意: super关键词指定当前子类的直接父类
}
类型转换{
向上转型:
1 向上类型转换
父类类型的引用 = 子类类型的对象 ;
语法:
父类类名 对象名 = new 子类构造方法(参数);
父类类型的引用可以访问哪些内容?
1 访问父类中定义的属性和成员方法
2 如果子类重写了父类的方法,则执行子类重写后的方法。
3 父类的引用不能访问子类中任何属性和特有的方法。
2 示例代码:
向下转型:
向下类型转换
把父类引用转换成子类类型
语法:
(子类类型)父类类型引用;
注意: 向下类型转换是不安全的,容易引发异常:java.lang.ClassCastException;
向下转换时使用instanceof判断一下。如果返回为true 则可以转换,如果为false则不可以转换
语法 : 引用名 instanceof 类或接口
instanceof:
instanceof:
语法 : 引用名 instanceof 类或接口
编译期 : 引用名的类型必须与后面的类之间有继承关系,否则出现编译错误。
运行期: 如果后面类可以引用对象的,则返回true,否则返回false
一个对象哪些类型可以引用?
1 父类(包含所有级别的父类)类型的引用
2 本身 类型的引用
3 兄弟类型及子类类型不能引用
4 所实现的接口类型的引用,或其父接口类型的引用,或父类实现的接口的引用
5 所实现的接口类型子接口类型的引用不能引用,与实现接口同级的接口也不能引用
多态:
1 多态
同一个父类类型的引用,引用不同子类对象时,调用同一个方法得到不同的结果。
表现形式:
父类类型 引用名 = new 子类类型();
2 实现多态的前提:
1) 类与类之间有继承关系
2) 父类类型的引用 引用子类类型的对象
3) 在子类中有方法重写。
3 使用多态的好处:"易扩展“,"易维护",“代码的复用"
让程序满足: 开闭原则:
开:功能的扩展开放 :继承同时,进行方法的重写
闭合: 对现有类的修改是闭合的 :多态
4 多态的表现形式:
1) 父类类型的形参,子类类型对象的实参
2) 返回值类型为父类类型,return 子类类型对象
3) 数组:父类类型的,每个元素引用是子类类型的对象
面向对象编程的三大特征:抽象 , 封装,继承,多态
封装:是为了能得到类和方法,父类。
面向对象设计原则:要将变化和不变化的分开封装。
继承:是为能在不修改原文件的时候扩展功能 (方法重写)。
面向对象设计原则:开放关闭原则:对扩展开放,对修改关闭
对修改关闭:当有新的需求时,不能打开源文件对源代码进行修改。
对扩展开放:当有新的需求时,应该创建一个新的子类,在子类中进行对父类的修改。
多态:在不修改源代码的情况下,让以前的代码可以直接使用新的子类。