接口与多态
- 接口
- 接口概述
- 接口成员的特点
- 类和接口的关系
- 抽象类和接口的关系
- 匿名对象
- Final修饰符
- 多态
- 多态概述
- 多态成员的特点
- 多态的向上转型和向下转型
接口
接口概述
由于JAVA语言的集成是单一继承,一个子类只能继承一个父类
为了处理继承的单一性,出现了接口的机制。接口:
是一种比抽象类还要抽象的类,接口中只有抽象方法
接口与类的关系是实现关系(implements)
//创建接口
interface animals{
public void eat();
}
//类实现接口
class cats implements animals{
//方法的重写
public void eat(){
System.out.println("猫吃鱼");
}
}
接口成员的特点
成员变量:
1.接口中无成员变量,因此所有的成员变量均为常量,默认修饰符为final
interface animals{
//修饰符默认为final
int i = 10;
public void eat();
}
成员方法:
1.成员方法均为抽象方法,
2.没有办法创建对象
3.more使用abstract修饰方法
类和接口的关系
1.类与类之间的关系:继承关系(单一继承)
class cat extends animals{}
2.类与接口之间的关系:实现关系(多实现)一个类可以实现多个接口class cat implements animals{}
3.接口与接口之间的关系:继承关系,多继承interface interA extends interB,interC
抽象类和接口的关系
1.相似性:
继承或实现的类都要对方法进行重写
2.区别:
1.继承是单一继承,多层继承;实现是多实现
2.抽象类有成员变量,有非抽象方法,有构造方法
3.接口无成员变量,只有抽象方法和常量,无构造方法
匿名对象
new Student();创建对象时没有使用变量接收就称之为匿名对象
匿名对象用于:方法只调用一次时可以使用匿名对象。
Final修饰符
可用于修饰类,方法,变量
修饰类:该类不能被继承
修饰方法:该方法不能被重写
修饰变量:该变量变为常量,不能被修改
多态
多态概述
实现多态的前提
1.有子父类继承关系,接口实现关系
2.有方法的重写
3.父类引用指向子类·
父类引用指向子类
class animal{
}
class cat extends animals{
}
父类引用指向子类
animal a = new cat();
多态成员的特点
成员变量:编译时看的是左边的类,左边类有,则可以编译,运行时看的是左边类的内容
成员方法:编译时看的是左边的类,左边类有,则可以编译,运行时其内容看的是右边。
静态成员方法(static修饰的方法):编译看左边,运行的内容也看的是左边
多态的向上转型和向下转型
引用类型的转换 *
向上转型: *
自动向上转型,由小到大 (子类型转成父类型) *
向下转型: *
手动转型,由大到小(父类型转成子类型) *
当我们使用子类特有的成员时,才使用强制转化
animals a = new dogs();//子类型转成父类型,向上转型
a.eat();
//向下转型 强制转型
dogs d = (dogs)a;
d.swim();