一 继承的基本概念
1、是面向对象三大特征之一
2、Java中支支持单继承,即每个类只能有一个直接父类
3、继承的关键词是extends
不能被继承的父类成员 | |
private成员即私有成员 | |
子类与父类不在同包,使用默认访问权限的成员 | |
无法继承父类的构造方法 |
4、深入理解继承
同一个类中 | 同一个包中 | 子类 | 任何地方 | |
private | 可以 | 不可以 | 不可以 | 不可以 |
默认修饰符 | 可以 | 可以 | 不可以 | 不可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
public | 可以 | 可以 | 可以 | 可以 |
5、多重继承关系顺序
父类属性——>父类构造方法——>子类属性——>子类构造方法
6、需要注意的是:
如果子类的构造方法中没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。如果子类的构造方法中通过super显式调用父类的有参构造,则将执行父类相应的构造方法,而不执行父类的无参构造方法。
即没有super调用则执行父类无参方法,有super调用则执行父类相应构造方法
二 方法重写(overriding)
1、方法重写:在子类中可以根据需求对从父类继承的方法进行重写,称为方法的重写或方法的覆盖。
2、方法重写的规则:
重写方法和被重写方法必须具有相同的方法名
重写方法和被重写方法必须具有相同的参数列表
重写方法的返回值类型必须和被重写方法的返回值相同或者是其子类
重写方法不能缩小被重写方法的访问权限
3、方法重载和方法重写的区别?
overloading是方法重载,重载涉及同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型、访问修饰符无关。
overriding是方法重写,重写涉及的是子类和父类的同名方法,要求方法名相同,参数列表不同,返回值类型相同(或是其子类)、访问修饰符不能严于父类。
位置 | 方法名 | 参数表 | 返回值 | 访问修饰符 | |
方法重写 | 子类 | 相同 | 相同 | 相同或是其子类 | 不能比父类更严格 |
方法重载 | 同类 | 相同 | 不相同 | 无关 | 无关 |
三 Object类
1、Object是所有类的父类,也就是所有类继承于Object类!
2、Object类常用的方法
方法 | 说明 |
toString() | 回当前对象本身的有关信息,按字符串对象返回 |
equals() | 比较两个对象是否是同一个对象,是则返回true |
hashCode() | 返回该对象的哈希代码值 |
getClass() | 获取当前对象所属的类信息,返回Class对象 |
3、说明"=="和"equals"的区别?
equals是默认使用Object中的方法,本质上就是在比较地址,但是像Arrays、String等类重写了Object的equals方法,内部的实现是比较的值是否相等
四 final修饰符
1、在Java中,final修饰符可以用来修饰类、方法和变量(包括成员变量和局部变量)
2、修饰类:当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法
!注意!final修饰的方法不能被重写,并且只能被赋值一次