面向对象(下)
类的继承
父类的方法子类继承;
重写(override / overwrite):
1,必须要有继承;
2,方法名相同;
3,参数列表、参数类型、参数个数一致
4,返回值类型相同
5,子类重写父类方法不能使用比父类更为严格的访问权限;
重载(overlord)同一个类:
- 被重载的方法必须改变参数列表(参数个数或类型不一样);
- 被重载的方法可以改变返回类型;
- 被重载的方法可以改变访问修饰符;
- 被重载的方法可以声明新的或更广的检查异常;
- 方法能够在同一个类中或者在一个子类中被重载。
- 无法以返回值类型作为重载函数的区分标准。
Object: 所有类的父类;
toString:
将对象转换成字符串的方法;
equals方法重写注意的问题:
- 自反性:对于任何非空引用值
x
,x.equals(x)
都应返回true
。 - 对称性:对于任何非空引用值
x
和y
,当且仅当y.equals(x)
返回true
时,x.equals(y)
才应返回true
。 - 传递性:对于任何非空引用值
x
、y
和z
,如果x.equals(y)
返回true
,并且y.equals(z)
返回true
,那么x.equals(z)
应返回true
。 - 一致性:对于任何非空引用值
x
和y
,多次调用 x.equals(y) 始终返回true
或始终返回false
,前提是对象上equals
比较中所用的信息没有被修改。 - 对于任何非空引用值
x
,x.equals(null)
都应返回false
。
final关键字:常量;
在final关键字修饰的变量全部大写;
修饰变量,让变量只能赋值一次(不可更改);
修饰方法:被final 关键字修饰的方法,不能被重写;
修饰类:被final修饰的类不能被继承;
多态:
父类的引用指向子类的对象;
在同一个方法中,参数的 类型相同但是由于运行的环境不同而表现出来的不同形式;
对象转型:
向上转型:隐式;
向下转型:显式(需手动强转);
父类无法转换子类;
父类的对象可以转成子类的对象
父类的变量指向子类的对象(可以强转);
父类的对象,不能访问子类中特有的成员(成员变量,成员方法);
instanceof关键字:
用来判断某个变量将是否是一种类型;
变量 instanceof 类型 返回boolean值;
抽象类:
1,在一个类 中某一个方法不需要实现,完全交个子类实现,这个方法需要被声明为抽象方法;
2,含有抽象方法的类必须声明为抽象类;
3,抽象类可以没有抽象方法;
4,抽象类无法被实例化;
定义方法后,修改方法只需修改指向的对象,
便于后期维护
抽象类的子类无法实现父类的抽象方法时,自己也变成抽象类由它的子类实现;
接口:
接口是一种特殊的抽象类;
接口只定义方法;
抽象类与接口的区别:
抽象类是继承来的,继承只能单继承;
接口是实现来的,接口可以多实现 ;
接口的范围类型可以不写 , 默认为public;
接口中可以定义成元变量(全局,整个实现类都可以访问);
实现类实现继承了父类的 接口的时候,需要实现所有接口的方法;
接口可以多继承(类不行)
如果抽象类实现接口,可以只实现部分方法,普通类需要全部实现;
package关键字可以解决类名重名的现象;
import关键字
如果两个class文件不在一个包下面需要import;
权限修饰符:
public(共开的)
权限最大
所有类都能访问的到
private(私有的)
只有本类中才能访问的到
protected()
只有子类能访问的到
()
只能在同一包下面访问的到