接口与多态

  • 接口
  • 接口概述
  • 接口成员的特点
  • 类和接口的关系
  • 抽象类和接口的关系
  • 匿名对象
  • 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();