java之多态问题详解

多态概述:某一个事物,在不同时刻表现出不同的状态

 例如:猫可以是猫的类型  猫 m = new 猫();
 同时,猫也是动物的一种,也可以把猫成为动物
 动物 d = new 猫();

像这样new出的对象要从右边向左边读,例如 猫 m = new 猫();;猫是猫
动物 d = new 猫(); 读 猫是动物;

多态的前提和体现
1.有继承关系
2.有方法重写
3.有父类引用指向子类对象
   父 f = new 子();

多态的成员访问特点(通过代码展示)
A:成员变量
		编译看左边,运行看左边
B:构造方法
		创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化	
C:成员方法
		编译看左边,访问看右边
D:静态方法
		编译看左边,运行看左边
		(静态和类相关,所以算不上重写,访问的还是左边)

A:成员变量
		编译看左边,运行看左边
class Fu{
	public int num = 100;
	
	public void show() {
		System.out.println("Fu的方法");
	}
}

class Zi extends Fu{
	public int num = 1000;
	public int num2 = 50;
	
	public void show() {
		System.out.println("Zi类的方法");
	}
}

public class test {
	public static void main(String[] args) {
		Fu f = new Zi();
		System.out.println(f.num);
		
		//System.out.println(f.num2);  找不到符号
		//f.num2  因为编译看左边  Fu f Fu类没有num2,所以提示找不到符号
		
	}
}

运行结果:
在这里插入图片描述

B:构造方法
	创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化

C:成员方法
		编译看左边,访问看右边
class Fu{
	public int num = 100;
	
	public void show() {
		System.out.println("Fu的方法");
	}
}

class Zi extends Fu{
	public int num = 1000;
	public int num2 = 50;
	
	public void show() {
		System.out.println("Zi类重写Fu类的方法");
	}
	
	public void mo() {
		System.out.println("Zi类自己的方法");
	}
}

public class test {
	public static void main(String[] args) {
		Fu f = new Zi();
		System.out.println(f.num);
		
		f.show();
		
		//f.mo();    找不到符号
		/**
		提示找不到符号是因为编译看左边,而左边Fu是没有mo方法的
		所以找不到符号
		**/
	}
}

运行结果
在这里插入图片描述

D:静态方法
		编译看左边,运行看左边
		(静态和类相关,所以算不上重写,访问的还是左边)
class Fu{
	public int num = 100;
	
	public void show() {
		System.out.println("Fu的方法");
	}
	
	public static void fun() {
		System.out.println("Fu类的静态方法");
	}
}

class Zi extends Fu{
	public int num = 1000;
	public int num2 = 50;
	
	public void show() {
		System.out.println("Zi类重写Fu类的方法");
	}
	
	public void mo() {
		System.out.println("Zi类自己的方法");
	}
	
	public static void fun() {
		System.out.println("Zi类的静态方法");
	}
}

public class test {
	public static void main(String[] args) {
		Fu f = new Zi();
		System.out.println(f.num);
		
		f.show();
		f.fun();
		
		//f.mo();    找不到符号
		
	}
}

运行结果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值