接口
接口的概述:
接口是一个比抽象类还抽象的类,接口里所以的方法全是抽象方法,接口和类的关系是实现,implements
格式:
创建接口的格式和创建类差不多,只是把class换成interface
interface 接口名{
}
*******************************************************************************
接口的成员(成员变量,成员方法)特点:
成员方法:只有抽象方法
成员变量:只能有常量(变量无法使用)
默认使用public static final来修饰成员变量
如果不加,系统默认使用public&abstract修饰方法
只能使用public&abstract修饰方法
(如果用private修饰,没有意义)
注意:
接口不能创建对象(不能实例化),(就是不能new 一个)
类和接口的关系是实现关系,一个类实现一个接口必须实现它所以的方法
*******************************************************************************
类与类(class与class,):继承关系,单一继承,多层继承(extends)
类与接口(class与interface):实现关系,多实现,一个类可以是实现多个接口(implements)
接口与接口的关系(interface与interface):继承关系,多继承(extends)
*******************************************************************************
接口的优点:
1.类与接口的关系,实现关系,而且是多实现,一个类可以实现多个接口
类与类之间是继承关系,java中的继承是单一继承,一个类只能有一个父类,
打破了继承的局限性.
2.对外提供规则(USB接口)
3.降低了程序的耦合性(耦合性就是程序与程序直接的关系,的连接,降低耦合性可以减少程序的出错)(可以实现模块化开发,定义好规则,每个人实现自己的模块,提高了开发的效率)
******************************************************************************\
接口和抽象类的区别:
共性:不断的抽取,抽取出抽象的概念
区别1:与类的关系
类与接口是实现关系,而且是多实现,一个类可以实现多个接口
类与抽象类是继承关系,java中的继承是单一继承,一个类只能有一个父类,java中的继承是多层继承.
区别2:成员
成员变量:
抽象类可以有成员变量,也可以有常量
接口只能有常量
成员方法:
抽象类可以有抽象方法,可以有非抽象方法
接口只能有抽象方法,而且方法有默认修饰符 public abstract
构造方法:
抽象类有构造方法的
接口没有构造方法
*******************************************************************************
多态
多态的前提:
子父类的继承关系
方法的重写
父类引用指向子类对象
//父类引用 Animal a
//指向 =
//子类对象 new Cat()
动态绑定:运行期间调用的方法,是根据其具体的类型
******************************************************************************
多态的成员特点:
Animal a = new Cat();
成员变量:编译时看的是左边,运行时看的左边(因为变量不可以重写(覆盖),没有重写这个说法,所以a还是父类的a)
成员方法:编译时看的是左边,运行时看的右边(创建的父类Animal a对象,但是a对象调用的还是Cat子类方法,因为子类的a可以重写(覆盖))
静态方法:编译时看的是左边,运行时看的也是左边(使用变量去调用静态方法,其实相当于用变量类型的类名去调用)相当于Animal .方法名
编译是看的都是左边,运行时成员方法看的是右边,其他(成员变量和静态方法)看的都是左边
*******************************************************************************
多态中的向上转型和向下转型:
Animal a = new Dog(); //向上转型
Dog d = (Dog)a;//向下转型
d.xxx
引用类型之间的转换
向上转型
由小到大(子类型转换成父类型)
向上转型
由大到小(强制把父类型转化成子类型)
基本数据类型的转换
自动类型转换
由小到大
byte short char ---int ---long--- float ---double
强制类型转换
由大到小
|
|