再不看看Java多态,就要忘光了!

大家好,我是方圆
我们一起把多态好好看看吧!


1. 多态是嘛?

在面向对象语言中,接口的多种不同的实现方式即为多态。

这句话,我们该怎么理解呢?写写代码看看

class Animal{
	// 可被子类访问的name
	protected String name;	
	public Animal() {
		this.name = "Animal";
	}
	// 封装
	public String getName() {
		return this.name;
	}
}

class Cat extends Animal{
	Cat(){
		name = "Cat";
	}
}

class Dog extends Animal{
	Dog(){
		name = "Dog";
	}
}

public class Test {
	static public void board(Animal s) {		
		System.out.println(s.getName());
	}
	public static void main(String[] args) {
		//创建Cat对象
		Animal cat = new Cat();		
		//创建Dog对象	
		Animal dog = new Dog();			
		
		board(cat);
		board(dog);
	}
}

// output
// Cat
// Dog

上面这个简单的代码,便体现出了多态的作用!根据传入的同一个父类的不同实现类,输出不同的结果

2. 多态的必要条件

  • 继承
  • 重写
  • 基类引用指向派生类
//基类引用指向派生类
Animal cat = new Cat();

2.1 多态成员访问的特点

  1. 成员变量
    编译看左(基类),运行也看左(基类),不论何时都是访问基类的成员变量
  2. static方法
    编译看左(基类),运行也看左(基类)
  3. 成员方法
    编译看左(基类),运行看右(派生类)
  • 局限:不能调用派生类特有的成员属性和成员方法

3. 区别重载和重写

多态中,重写的基本原则

  1. 权限修饰符不能低于父类的方法
  2. 返回值、方法名、参数(类型,数目)必须相同
  3. 重写发生在继承或实现中
  4. 标记为staticfinal的方法不能被重写(static能被继承,但是不能重写)

重载的原则

  • 方法名必须相同参数必须不同
  • 比较常见的就是构造器的重载
重载重写
权限修饰符可以不同不能低于父类
返回值可以不同相同
方法名相同相同
参数必须不同必须相同

简简单单,多看多熟悉~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

方圆想当图灵

嘿嘿,小赏就行,不赏俺也不争你

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

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

打赏作者

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

抵扣说明:

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

余额充值