面向对象的高级特性

JAVA面向对象三大特性:继承、封装、多态。
继承(泛化):继承性是子类自动共享父类属性和方法的机制
【修饰符】 class 子类名 extends 父类名
特点:1.每一个类只有一个父类 2.一个父类可以有多个子类 3.子类拥有父类的属性和方法
原理:执行子类的构造函数时自动执行父类的构造函数。

super()

调用父类的构造器。(继承是默认?)
只能出现在子类的构造器中,且必须是第一行
super()中的参数,决定了调用父类哪个构造器
如果子类构造器其中没有super关键字,编译器会自动添加super(),调用父类的空构造函数
在同一个构造器中this()和super()不能同时存在

this()

调用本类的构造器。
只能写在第一行

继承

关键字:extends
继承的好处:1.使编码更高效 2.易维护 3.代码的重用
抽象类:包含了抽象方法的类

抽象方法

[访问权限修饰符] abstract 返回值类型 抽象方法名 (参数列表) ;

子类继承于抽象类,就要实现父类中的抽象方法,否则只能把自己定义为抽象类
抽象类不能创建对象
抽象方法不能为static;
必须声明为抽象类的情况
    一个类中包含一个或多个抽象方法的时候

接口:

语法规则:[访问权限修饰符] interface 接口名 {接口的成员}
//在接口中没有具体实现的方法,都是抽象方法,要在实现类中实现  

1.jdk8开始可以在接口中使用default关键字修饰方法,使方法可以拥有具体实现
2.用static关键字修饰方法,可以使用接口名直接调用方法
3.只有声明,没有具体实现(最常用)

封装

权限修饰符
权限修饰符
private权限小,限制类外访问,一般把属性设为private,让其他类 不能直接访问属性,达到保护属性的目的。

protected:受保护的,除了可被类自身及与其在同一个包中的代码 访问外,还可以在一个类中通过对象引用来访问,前提是这些对象引用至少应该具有与该成员所在的类相同的类型,也即是这些引用具有该成员所在类的类型或是其一子类型。

多态

概念:通过不同的子类对象,覆盖相同的父类方法,实现不同的效果。
三个必要条件:1.要有继承或实现2.要有重写(覆盖)3.父类引用指向子类对象

向上转型:
父类类名 对象名=new 子类类名
具有继承或实现关系
向上转换损失了子类新扩展的属性和方法,仅可以使用从父类中继承的属性和方法
向下转型:
子类类名 对象名=(子类类名)父类对象

内部类

内部类:定义在一个类的内部的类
语法规则:

[访问权限修饰符] class 类名{  
        [访问权限修饰符] static class 类名{  
        内部类成员  
        }  
        外部类成员  
    }  

注意:

  1. 无需创建外部类对象,可以访问外部类中的属性和方法
  2. 必须创建内部类对象,才可以使用内部类中的属性和方法
  3. 如果内部类中的方法名与外部类方法名相同,内部类优先级>外部类优先级
  4. 不能使用static修饰变量
  5. 静态内部类