多态成员的特点

多态的成员特点: 
		 1、成员变量,编译时看左边,运行的时候看右边
		 2、成员方法,编译时看左边,运行的时候看右边
		 3、静态方法,编译时看左边,运行的时候看左边
package fangfa.com;

public class JieKou {
	public static void main(String[] args) {
		/*
		 * 多态的成员特点: 
		 * 	1、成员变量,编译时看左边,运行的时候看右边
		 *  2、成员方法,编译时看左边,运行的时候看右边
		 *  3、静态方法,编译时看左边,运行的时候看左边
		 */		
		
		//父类的引用指向子类的对象
		father ss = new son();
		
		//输出的是父类的成员变量
		System.out.println(ss.num);
		
		//运行的是子类的方法
		ss.name1();
		//运行的是父类的静态方法
		ss.name2();
	}
}
	class father{
		int num = 20;
		public void name1() {
			System.out.println("我是父类方法");
		}
		public static void name2() {
			System.out.println("我是父类静态方法");
		}
	}
	class son extends father{
		int num = 10;
		public void name1() {
			System.out.println("我是子类方法");
		}
		public static void name2() {
			System.out.println("我是子类静态方法");
		}
	}
多态中向上转型与向下转型:
	引用类型之间的转换:
		向上转型:
			由小到大(小指的是子类型,大指的是父类型 )
		向下转型:
			由大到小
	基本数据类型的转换:
		自动类型的转换,有小到大(byte-short-char---int---long---float---double)
		布尔不能参与转换
		强制类型的转换,由大到小(有可能损失精度)
package fangfa.com;

public class JieKou {
	public static void main(String[] args) {
		father src = new son();//此处相当于子类型向上转换为父类型
		src.name();
		//强制转换,向下转型,当父类中没有相应的成员的时候,需要调用子类中的成员方法
		son set = (son)src;
		set.name1();
		}
}

class father{
	public void name() {
		System.out.println("吃饭");
	}
}
class son extends father{
	//方法重写
	public void name() {
		System.out.println("啃骨头");
	}
	public void name1() {
		System.out.println("狗刨");
	}

}

多态优缺点的演示:

package fangfa.com;
/*
*	
* 	多态的优缺点
* 		优点:可以提高可维护性(多态前提所保证的),提高代码的可扩展性
		缺点:无法直接访问子类特有的成员
*/
public class JieKou {
	public static void main(String[] args) {
		MiFactory factory = new MiFactory();
		factory.createPhone(new MiNote());
		
		factory.createPhone(new RedMi());
	}

	
}

class MiFactory {
	/*public void createPhone(MiNote mi) {
		mi.call();
	}
	
	public void createPhone(RedMi mi) {
		mi.call();
	}*/
	
	public void createPhone(Phone p) {
		p.call();
	}
	
}

interface Phone {
	public void call();
}

//小米Note
class MiNote implements Phone{
	public void call() {
		System.out.println("小米Note打电话");
	}
}

//红米
class RedMi implements Phone {
	public void call() {
		System.out.println("红米打电话");
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ctrl精

面试很多问题,积攒不容易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值