继承是对类中的共性内容进行抽取,抽取到另外一个类中,使原有的类和抽取后的类发生继承关系。继承是JAVA语言的一个很重要的特性。继承使得代码量大大减少,增加了代码的复用性。继承的出现使得类与类之间产生了关系,正是由于继承的出现,才导致了JAVA面向对象的第三个特性,多态。JAVA中只能实现单继承,不能多继承,但是可以实现多层继承。继承是为了解决现实生活中的问题而存在的,
继承时候,子类和父类中成员的特点:
一、 成员变量的特点
this可以区分本类对象中的成员变量和函数内的局部变量
super可以区分本类对象中的成员变量和父类对象中的成员变量
访问原则:
1 . 函数的就近访问
2 . 访问本类对象中的成员变量,使用this
3 . 访问父类对象中的成员变量,使用super
this表示本类对象
super 表示,父类的存储位置
this和super的用法很相似
二、 成员函数的特点
当子类和父类出现一模一样的函数的时候,看上去,子类是覆盖了父类的方法
当子类父类函数一模一样的时候,这就是函数的另一个特性,叫做重写,覆盖,复写 override
子类有运行子类,子类没有运行父类
三、构造函数的特点
构造函数能否被继承,不能被继承
构造函数存在覆盖,没有覆盖
子类的构造函数,会先访问父类构造函数,自动的
为什么子类会去方位父类构造函数,子类想看看父类中的成员变量是怎么初始化的
子类中,所有的构造的函数,都会默认访问父类的空参数的构造函数
子类构造函数第一个是super(),写了this()第一行就不是super,子类直接或者间接的访问
父类构造函数
四、Final关键字:
|--final是个修饰符,可以修饰成员变量,成员函数,修饰局部变量
|--被final修饰的类,是最终类,不能再派生子类
|--被final修饰的函数,是最终函数,不能被覆盖
|--被final修饰的变量,其实是一个常量
|--将程序中固定不变的数据,一般都定义为final,而且一般都是静态的
规范的写法:public finalstatic double PI = 3.14;
当程序中出现了固定不变的数据,必须写成final,体验出来你是新手
五、抽象类:
|--由来,是对象共性抽取出来,但是抽出来共性已经不是很具体了,父类没有必要具体的规定
没有方法体的方法,使用 abstract关键字修饰,表明这个是抽象方法,抽象方法必须存在于
抽象类中,这个类也需要abstract关键字来修饰
|--抽象类中,有抽象方法,抽象类,是不允许实例化对象,不能 new抽象类类名();
定义子类,继承抽象类,并覆盖抽象类中全部的抽象方法,建立子类对象
|--子类覆盖抽象类中的全部方法,带有强制性
六、接口:
当抽象类中的方法,全部是抽象方法的时候,这时可以把该类定义成接口
可以先期将接口理解为特殊的抽象类(接口中全部抽象方法,抽象类中可以有普通方法)
七、接口特点
|--接口中的方法都是抽象的
|--接口不能被实例化对象,只有子类实现了接口中的所有抽象方法后,该子类可以实例化对象
否则该子类还是一个抽象类
八、接口中成员的特点
|-- 成员变量
接口中的成员变量,都有固定修饰符public static fianl
|-- 成员方法
接口中的成员方法,publicabstract
九、子类实现接口
|-- 类与类之间是继承关系,类与接口之间是实现关系关键字implements
格式:子类 implements接口
{
实现全部抽象方法
}
十、实现和继承的区别
类与类之间是继承,类中是可以定义非抽象方法的,类只要继承,就可以使用了
接口中的方法全都是抽象的,必须由子类全部实现全
十一、接口的多实现
|--类可以同时实现多个接口,并全部实现接口中的抽象方法,建立子类对象
java将类的多继承进行了改良,同时实现多个接口,避免了安全隐患
因为接口中没有方法体,需要子类实现,运行以子类为主
子类可以继承一个类,并实现多个接口
|--类是继承体系的共性内容,而接口是该体系中的扩展功能
十二、接口的思想
|-- 接口是对外暴露的规则
|-- 接口是功能的扩展
|-- 降低了耦合度,提高了扩展性
十三、接口和抽象类的区别
|-- 抽象类只能被单继承,接口可以多实现
|-- 抽象类中可以定义非抽象方法,直接被子类使用
|-- 接口中只有抽象方法,需要子类全部实现
|-- 抽象类中定义继承体系中的共性内容
|-- 接口中定义体系中对象的扩展功能
|-- 接口的出现避免了单继承的的局限性
|-- 抽象类被继承,是体现了谁是谁的一种 is a
|-- 接口可以被实现,是体现了一种 like a关系
十四、接口中的多继承
|-- 接口与类之间是实现关系,接口与接口之间是继承关系