权限修饰符
private
本类
default(默认)
本类
同包类
protected
本类
同包类
不同包子类
protected的访问权限
同包下的类
不同包的子类,并且只能通过子父类关系访问,只有子类中才可以使用
public
本类
同包类
不同包子类
不同包下的其他类
以上权限修饰符只能修饰成员(static),成员修饰符(成员变量|成员方法)
private的内容不能被继承
只有public和default能修饰类,并且default默认出现
重写
重写和重载之间的区别
重写和重载都是指方法
不同的类
继承关系|实现关系
方法签名相同(方法名+参数列表)
如果存在方法的重写,再调用的时候调用的是子类中重写的方法
重写方法会对父类中被重写的方法进行屏蔽
如何检查方法的重写
左边会有一个向上的三角
强制检查 @Override
== : 方法签名
<= : 返回值类型 :
基本数据类型完全相同
引用数据类型:子类<=父类
>= : 权限修饰符:子类>=父类的权限修饰符
不能被重写
被private修饰的方法不能被重写
被final修饰的方法不能被重写
被static修饰的方法不能被重写
如果子父类中的同名方法,父类中是静态的,子类中的同名方法要求也要被static修饰
super
super和this的区别
this 指代当前new的对象
super 指代父类对象
super用在构造器的首行调用父类中的构造器
super(参数列表)
必须要使用再首行,没有没有显示调用父类中其他构造器,默认调用父类空构造
super区分子父类中同名的成员
如果不存在子父类中同名成员问题,可以省略,默认之类中的找子类,父类中的找父类
如果存在子父类中同名成员,并且想要调用父类中的成员,使用super表示父类对象,否则默认子类(就近原则)
创建对象是先父类后子类
先静态后成员
final最终的
final修饰变量为常量
final修饰的方法不能被重写
final修饰的类不能被继承(太监类)
final修饰的是引用数据类型,对象的地址不能变,但是可以改变对象的成员
equals
equals 和 ==的区别
== 比较对象的地址的是否相同
equals如果子类中没有重写,默认调用Object类中的equals方法,比较的是地址,但是可以重写,自定义比较规则,按照内容比较对象是否相同
Object类
是java中所有类的根据类
java中的所有类都会直接或者间接的继承自Object类
toString() 方法
当打印一个对象的引用时候,默认调用对象的toString()
当打印一个对象,其实是想要看对象的所有属性的值
重写toString()方法,自定义输出对象属性的内容,实现打印对象的属性值,不打印地址,默认打印的对象的地址,因为默认调用Object类型的toString()
多态
一种事物的多种形态,多种表示形式
多态的前提
类的继承
接口的实现
多态的最终体现
父类的引用指向子类的对象
多态的目的
父类的引用在如果调用子父类中都有的方法,调用的是子类中重写的方法
子类的新增方法对父类引用不可见
多态使用成员
成员变量: 编译运行看父类
成员方法: 编译看父类|类型|左边,运行看子类|找对象|右边
继承
继承链 、自己没有找父亲
A
B C
编译看类型(确定方法表)、运行找对象
成员方法:编译看左边|类型 运行看右边|对象
就近最优原则:自己没有找父亲
基类对子类新增方法不可见
编译时确定方法表:多态能够调用的方法
转型(cast)
向上转型:(自动类型提升)
例: Fu zi=Zi();
向下转型:(强制类型转换)
例: Zi zi1=(zi)zi();
可以调用子类中新增的方法
A instanceof B
判断A引用是否是B类型的对象|是否是B类型子类的对象,如果是返回true,如果不是返回false
编译的时候只检查A和B是否在一条继承连上
abstract
使用abstract关键修饰的方法为抽想法方法
没有方法体
必须存在与抽象类中
抽象类
abstract修饰的类就是抽象类
注意事项
抽象类不能实例化
抽象方法一定要存在抽象类中
抽象方法一定要被重写才能使用
抽象类中可以存在抽象方法,可以存在实例方法
使用抽象类中的内容:
通过子类
具体子类:重写抽象父类中的所有抽想方法+按需新增方法
抽象子类:按需重写抽象方法+按需新增
一个抽象方法如果被重写过就不需要再次被重写了,但是也可以重写
abstract不能和private,final,static和native不能一起使用
权限修饰符
最新推荐文章于 2022-08-03 16:53:52 发布