-----------day03-面向对象【接口、多态】-----------------
1.接口:
Java中的接口是一个比抽象类还抽象的类,因为在接口中定义的方法都是抽象方法;
2.接口的定义格式:
修饰符 interface 接口名{
定义抽象方法;
};
接口中不仅可以定义抽象方法,也可以定义变量。
定义变量的格式:
public static final 数据类型 变量名=初始值;
final 表示 最终的 不可改变的;
也就是说定义一个变量,给它赋了一个最终值,这个值以后就不会再改变,也就是定义了一个常量;
3.接口实现类的定义
格式:
修饰符 class 类名 implements 接口名{
实现接口中的所有方法;
};
使用:
1.创建实现类对象;
2.通过实现类对象调用方法和常量。
总结:
一个接口也有多个实现类;
接口是用来定义功能的名字的,实现类是用来实现具体的功能的.
4.定义接口的细节
1.接口中只能定义常量,格式:public static final 数据类型=常量值;
前面的关键字可以不谢,也可以挑着写,即使不写或者挑着写,默认也是
public static final 。
2.接口中只能定义抽象方法,格式:public abstract 返回值类型 方法名(参数列表);
前面的关键字可以不谢,也可以挑着写,即使不写或者挑着写,默认也是 public abstract;
以后开发时,abstract 关键字不写;
5.接口的特点:
1.定义接口的关键字是 interface 不是class;
2.接口可以定义常量,不能定义变量;
3.接口中只能定义抽象方法,不能定义普通方法;
4.接口不能创建对象,也就是不能 new;
5.接口可以继承接口,而且可以多继承;
6.一个类可以实现多个接口;
6.接口和抽象的区别
相同点:
1.都不能创建对象,也就是都不能new;
2.都可以定义抽象方法和常量;
3.扩展性都很强;
不同点:
1.定义接口关键字是interface ,定义抽象类关键字是 abstract class;
2.接口中不能定义变量,抽象类中可以;
3.接口可以多个继承,抽象类只能继承一个父类;
4.接口中方法只能是抽象方法,抽象类中方法可以是抽象方法也可以是普通方法;
5.接口比抽象类扩展性更强;
6.接口给实现类扩展功能(额外添加的功能),抽象类是抽取子类共有的方法;
使用情形:
当让子类都重写(实现)的方法可以写到接口中;
当让子类需要继承一些方法,而又需要重写一些方法时就使用抽象类;
由于接口的扩展性比较强,以后开发时主要是面向接口的开发,接口的使用比较多;
7.多态
某一种事物在不同的阶段体现出来的不同形态;
8.多态的写法
1.继承的写法
前提条件:有一个父类,有一个子类;
格式: 父类名 对象名=new 子类名(参数列表);
(父类类型的变量指向了子类的对象)
2.特点;
1.通过多态不能访问子类中特有的成员变量和成员方法。
2.如果子类重写了父类中的方法,通过多态访问时,访问子类中重写父类后的方法;
3.如果子类重写了父类中的变量,通过多态访问时,访问父类中的变量。不是子类中的;
3.实现接口的写法:
前提条件:有一个接口,有一个实现类;
格式: 接口名 对象名=new 实现类名(参数列表);
4.特点:
通过多态访问方法时,访问的是实现类中的实现后的方法;
5.多态的好处和弊端:
1.好处:提高方法的代码的复用性与扩展性,如果没有方法重写,则多态同样没有意义。
2.弊端:不能调用子类的特有成员;
总结
多态:父类类型的变量指向子类的对象;
格式:父类名 对象名 = new 子类名(参数列表);