黑马程序员——多态

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

多态是事物存在的多种体现形态,多态作为面向对象的3大特性之一是非常重要的。


多态的体现

父类引用指向了自己的子类对象

Animal a = new Cat();//向上转型
//Animal是Cat的父类


多态提高了程序的扩展性,但只能使用父类的引用访问父类中的成员(很重要)

//还是上面的例子,Animal是父类具有run方法,Cat是子类有catch这个特有方法
Animal a = new Cat();
a.run();
//a.catch();此方法为子类特有访问不了
Cat c = (Cat)a;//将父类引用(子类对象)转成子类类型
c.catch();

注意:不可将父类对象转成子类类型,多态始终是子类对象在变化!


多态中成员函数的特点(非静态)

编译时,看引用型变量所属的类是否有调用的方法,若有则通过,否则编译失败。

运行时,看对象所属的类中是否有调用的方法。

(也就是编译看左边,运行看右边~)


多态中成员变量,静态成员函数的特点

无论编译还是运行,都看左边(引用型变量所属的类)

class Fu
{
	int num = 5;
	void method1()
	{
		System.out.println("fu method_1");
	}
	void method2()
	{
		System.out.println("fu method_2");
	}
	static void method4()
	{
		System.out.println("fu method_4");
	}
}


class Zi extends Fu
{
	int num = 62;
	void method1()
	{
		System.out.println("zi method_1");
	}
	void method3()
	{
		System.out.println("zi method_3");
	}

	static void method4()
	{
		System.out.println("zi method_4");
	}
}
class  Demo
{
	public static void main(String[] args) 
	{
		
		Fu f = new Zi();
		System.out.println(f.num);//父类的num
		Zi z = new Zi();
		System.out.println(z.num);//子类的num

		f.method1();//运行子类的方法
		f.method2();//运行,子类继承了该方法
		//f.method3();//出错父类没有该方法
		f.method4();//运行父类的方法
		z.method4();//运行子类的方法
	}
}	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值