继承的概述和好处java
提升代码复用性ide
使类与类之间产生关系函数
继承的格式this
继承的案例spa
继承后成员访问特色对象
继承后的特色—成员变量继承
继承后成员变量的访问规则内存
重名it
子父类中出现同名的成员表量时,子类会优先访问本身对象中的成员变量,若是此时想访问父类成员变量,须要用到super关键字模板
super关键字:super能够用于变量和方法
不重名
不重名不影响
继承后的特色—成员方法
继承后成员方法的的访问规则
重名
则建立子类对象调用该方法的时候,子类对象会优先调用本身的方法
不重名
不影响,对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法
方法重写
方法重写与方法重载的区别
方法重写:子方法中出现与父方法的方法名,返回值类型,参数列表都相同的方法,会出现覆盖效果
使用场景:发生再子父类之间的关系。子类继承了父类的方法,可是子类以为父类方法没法知足本身的需求,子类从新写了个与父类同名的方法,以便覆盖父类的方法。
Overrider重写注解
标记在方法上面,提升代码可读性,也能够防止出错
注意事项
方法重写是在发生父子类之间的关系
子类方法覆盖父类方法,必需要保证权限大于等于父类权限
子类方法覆盖父类方法,返回值类型,函数名和参数列表都要如出一辙
方法重载:局部方法中出现方法名和返回值类型相同,参数列表不一样的方法
继承后的特色—构造方法
继承构造方法的规则
构造器的定义格式和做用
构造器的名字是与类名是一致的,因此子类是没法继承父类构造方法的
构造器的做用是初始化对象成员变量数据的,因此子类的初始化过程当中,必须先执行父类的初始化动做,子类的构造方法中默认有一个super( ),表示调用父类的构造方法,父类成员变量初始化后,才能够给子类使用(先有爸爸,才有儿子)
注意事项
在子类的构造方法中调用父类的构造方法必定要放在子类构造方法中的第一行
全部子类的构造方法都会默认调用父类的空参构造方法
子类的构造器的第一行都隐含了一个super( )区调用父类无参数构造器,super( )能够省略不写
若是子类的构造方法中手动调用了构造方法,那么们就不会自动调用父类的构造方法
子类有用子类, 子类没有找父类, 父类有就用父类, 父类没有就报错.
继承的特色
java只支持单继承,不支持多继承
单继承:一个子类只能有一个父类
多继承:一个子类能够有多个父类
一个子类虽然只能有一个父类,可是一个父类能够有多个子类
能够多层继承
多层继承:子类能够继承父类也能够被另外一个子类继承
super和this关键字
继承内存
在堆中new出来的空间里面,对象空间除了有子类的方法和变量,还有一个空间存放父类的变量和方法,
当主方法调用方法或者变量时,根据就近原则优先选择本类(局部),若是没有,再考虑父类
抽象类的概述
抽象方法和抽象概念
咱们把没有方法主体的方法称为抽象方法
Java语法规定,包含抽象方法的类就是抽象类
模板模式
抽象方法的定义和使用
定义抽象类:抽象须要使用abstract关键字修饰,这种类不能被建立对象。他就是用来作父类,被子类继承的
格式: 权限修饰符 abstract class 类名
抽象类的注意事项
注意:继承抽象类的子类必须重写父类全部的抽象方法,不然,该子类也必须声明为抽象类
抽象类中不必定有抽象方法,可是有抽象方法的必定是抽象类
抽象类不能建立对象,只能建立其非抽象子类的对象
抽象类中,能够有构造器,是提供子类建立对象时,初始化成员使用的
抽象类的子类必须重写父类中全部的抽象方法不然子类也必须定义成抽象类
抽象类存在的意义是为了被子类继承,抽象体现的是模板思想
final关键字的概述
不可改变,能够用于修饰类,方法和变量
类:被修饰的类,不能被继承
方法:被修饰的方法,不能被重写
变量:被修饰的变量不能被从新赋值