黑马程序员----接口与多态

------- android培训java培训、期待与您交流! ----------


接口

可以认为是一个特殊的抽象类

当抽象类中的方法都是抽象的该类可以通过接口的形式来表现

 

格式特点

1 接口中常见定义  常量 抽象方法 接口中的成员

2 接口成员有固定修饰

常量  public static final

方法 public abstract

接口不可以创建对象因为是抽象方法

怎样被子类实现

子类对接口中的抽象方法全部覆盖后子类才可以实现实例化否则子类是一个抽象类

接口可以被类多实现

继承类的同时可以实现多接口

 

接口

         是对外暴漏的规则

         是程序的功能扩展

         可以用来多实现

类-接口  实现关系  类-类 继承关系 接口-接口 继承

功能扩展(体系外加入)

 

 

多态

可以理解为事物存在的多种形态

多态是一种OOP特性它使一个对象能够决定在接收到一个方法的调用时用哪个方法实现

 

多态体现

父类的引用指向了自己的子类对象父类的引用也可以接受

前提类与类之间必须有关系存在覆盖

弊端  只能使用父类引用父类中的成员

强制将父类引用转换成子类类型  向下转型

Cat c = (Cat)a;

向上转型类型提升

Animal a = new Cat();

父类引用指向子类对象该引用可强制提升强制转换

自始至终都是子类对象在变化

 

多态的应用

简化了代码

在多态中成员的特点

 

Zi z  = new Zi();

Fu f = new Fu();

在编译时期参阅引用型变量所属的类中是否有调用的方法如果有编译通过否则则否

 

在运行时期参阅对象多数关系是否有调用的方法

总结:成员变量在多态调用时编译看左边运行看右边

在多态中成员变量特点

无论编译或者运行都参考左边引用型变量的所属关系

多态中静态成员函数

无论编译运行都参考左边

 


abstract class Animal
{
	abstract void eat();
}  

class Cat extends Animal
{
	public void eat()
	{
		System.out.println("吃鱼");
	}
	public void catchMouse()
	{
		System.out.println("抓老鼠");
	}
}

class Dog extends Animal
{
	public void eat()
	{
		System.out.println("吃骨头");

	}
	public void kanJia()
	{
		System.out.println("看家");
	}
}

class DuoTaiDemo
{
	public static void main(String[] arge)
	{
		//Cat c = new Cat();
		function(new Cat());
	}

	public static void function(Animal a)
	{
		a.eat();
		if(a instanceof Cat)
		{
			Cat c = (Cat)a;
			c.catchMouse();
		}
		else if (a instanceof Dog)
		{
			Dog d = (Dog)a;
			d.kanJia();
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值