1、继承
是将一些共有的属性与方法提取出来成为一个类,其他的类通过继承父类的方法或属性,提高代码的复用性。
extends表示继承,子类继承后,方法的调用或者变量的产看会先在自己的类中寻找,如果没有,会在父类寻找,如果在Object中还未找到,则会报错。
可以继承的东西包括:公共可访问的成员变量、普通方法、静态方法;私有的成员不能被继承,但是可以通过其他间接的方式或者反射来调用
构造方法不能被继承,但是存在隐式的调用
继承的关系:1、单继承:一个子类只能有一个直接父类
2、多重继承:子类还能有子类
3、如果一个类没有显示的继承,则存在隐式的继承Object类。Object是类中的亚当
2、方法重写
存在于父子类中,当父类的方法不能满足子类需求,则可以在子类中对同名的方法进行重写,可以加@Override进行注解
注意:在重写是java提供了一个注解,@Override,是帮助jvm理解代码
1、方法重写的时候,子类的访问修饰符必须大于或者等于父类的访问修饰符
2、方法名必须保持一致
3、方法重写时,返回值类型父类的返回值类型要大于或者等于子类的返回值类型
4、形参列表完全一致(类型,个数,顺序)
静态方法不能够被重写,因为有static修饰的jvm会优先加载,在类加载的时候就加载了
类比方法重载:同一个类中
1、形参列表不一致(类型,个数,顺序)
2、方法名相同
3、与返回值无关
3、super
指向的是父类的地址
super:指向父类的地址,但是不会创建父类的对象
1、在创建子类对象时,会存在隐式的调用,调用父类的无参构造
super();调用必须放在子类构造方法的第一句,如果有显示的调用,隐式调用将不存在
2、super可以调用父类公共可访问的方法或者属性,子类中使用父类的成员时 super.调用
4、抽象类
由abstract修饰
可以抽象的内容:抽象方法、成员变量、普通方法、静态方法、构造方法(不能直接创建对象 如果要访问成员 可以使用子类的对象)
抽象方法:没有方法体,并且由abstract修饰,只能存在于抽象类中,如果一个类继承了抽象类,就必须重写抽象类中抽象方法
方法重载Overloading与方法重写Overriding的区别:
相同点:方法名都必须保持相同
不同点:
1、存在位置不同:重载是在同一个类中;重写是在继承关系的子类中
2、参数列表(类型,个数,顺序):重载的参数列表可以不同;重写的参数列表必须一致
3、返回值类型:重载与返回值类型无关;重写时子类的返回值类型要小于父类
4、修饰符:重载与修饰无关;重写时子类的修饰符权限不小于父类的