多态

多态性

1、概念:
 同一个行为具有多个不同表现形式或形态的能力。

2、格式:

父类类型 变量名 = new 子类类型();

3、多态存在的三个必要条件:
  继承、重写、父类引用指向子类对象。

4、重写:
 1)子类能够重写父类的方法。
 2)当子类对象调用重写的方法时,调用的是子类的方法,而不是父类中被重写的方法。
 3)要调用父类中被重写的方法,则必须使用关键字super。

5、多态的实现方式:
 1)重写
 2)接口
 3)抽象类和抽象方法

6、多态中成员的特点:
 1)多态成员变量:编译运行看左边

	Fu f=new Zi();
	System.out.println(f.num);   //f是Fu中的值,只能取到父中的值

2)多态成员方法:编译看左边,运行看右边

    Fu f1=new Zi();
    System.out.println(f1.show());  
    //f1的门面类型是Fu,但实际类型是Zi,所以调用的是重写后的方法。

7、多态的作用:
 1)不必编写每一子类的功能调用,可以直接把不同子类当父类看,屏蔽子类间的差异,提高代码的通用率/复用率。
  2)父类引用可以调用不同子类的功能,提高了代码的扩充性和可维护性。

--例子:
package polym;

public class TestP {
	public static void main(String[] args) {
		show(new Cat());  // 以 Cat 对象调用 show 方法
		show(new Dog());  // 以 Dog 对象调用 show 方法

		Animal a = new Cat();  // 向上转型  
		a.eat();               // 调用的是 Cat 的 eat
		Cat c = (Cat)a;        // 向下转型  
		c.work();        // 调用的是 Cat 的 work
	}  
	
	public static void show(Animal a)  {
		a.eat();  // 类型判断
		if (a instanceof Cat)  {  // 猫做的事情 
			Cat c = (Cat)a;  
			c.work();  
		} else if (a instanceof Dog) { // 狗做的事情 
			Dog c = (Dog)a;  
			c.work();  
		}  
	}  
}
//定义一个抽象的动物类接口,定义一个抽象的eat()方法
abstract interface Animal {  
	abstract void eat(); 
}  

//喵实现动物接口并重写eat()方法,拥有自己的work()方法
class Cat implements Animal {  
	public void eat() {   
		System.out.print("猫吃鱼,");  
	}  

	public void work() {  
		System.out.println("猫抓老鼠");  
	}  
}  

//狗实现动物接口并重写eat()方法,拥有自己的work()方法
class Dog implements Animal {  
	public void eat() {  
		System.out.print("狗啃骨头,");  
	}  
	
	public void work() {  
		System.out.println("狗看家");  
	}  
}

--输出结果:
猫吃鱼,猫抓老鼠
狗啃骨头,狗看家
猫吃鱼,猫抓老鼠

面试题:
(答案见下一篇博客面试题部分)

上篇面试题答案:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值