我所理解的JAVA多态

不用写作文,不用考虑虎头蛇尾,不废话直接正题。


今天看了多态,对其中几个名词和多态用法进行了自我总结。

百度知道是这样说的,多态性是指允许不同类的对象对同一消息做出响应,很好的解决了函数重名问题。


  A  多态有两种表现形式:覆盖(override)和重载(overload)

1.重载

它发生在同一类中,类中的方法同名不同参数。如下,enjoy方法这种就是重载。且对方法前面的修饰符没有限制。

<pre name="code" class="java">

 2.覆盖 

覆盖发生在子类中,必须有继承才会有覆盖,又叫重写。

当子类继承了父类之后,对父类的某个方法感觉不舒服,就可以重写(覆盖)那个方法。但是方法名参数列表必须一样,而且访问权限不能比父类的大,父类用了protected,你就不能用public。

class Animal {
	private String name;

	public Animal(String name) {
		this.name = name;
	}

	public void enjoy() {
		System.out.println("叫声");
	}
}

class Dog extends Animal {
	private String furColor;

	public Dog(String name, String c) {
		super(name);
		this.furColor = c;
	}

	public void enjoy() {
		System.out.println("狗叫声");
	}
}
还是enjoy方法,很容易理解。


B  多态的使用条件

1.要有继承

2.要有重写

3.父类引用指向子类对象


以下也是多态的一种体现,pet是animal,将不同的pet类型传进去就出现不同结果。

class Animal {
	private String name;

	public Animal(String name) {
		this.name = name;
	}

	public void enjoy() {
		System.out.println("叫声");
	}
}

class Dog extends Animal {
	private String furColor;

	public Dog(String name, String c) {
		super(name);
		this.furColor = c;
	}

	public void enjoy() {
		System.out.println("狗叫声");
	}
}

class Cat extends Animal {
	private String eyeColor;

	public Cat(String name, String eyeColor) {
		super(name);
		this.eyeColor = eyeColor;
	}

	public void enjoy() {
		System.out.println("cat叫声");
	}
}

class Lady {
	Animal pet;
	String name;
	public Lady(String name, Animal pet) {
		this.name = name;
		this.pet = pet;
	}
	public void myPetEnjoy() {
		pet.enjoy();
	}
}

public class test{

	public static void main(String[] args) {
		Cat c = new Cat("cat", "blue");
		Dog d = new Dog("dog", "yellow");
		Lady l = new Lady("Mom", c);
		Lady la = new Lady("Aunt", d);
		l.myPetEnjoy();
		la.myPetEnjoy();
	}
}
打印输出:


写的有些草


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值