多态

本文深入探讨了Java中的多态概念,包括父类引用指向子类对象的实例,以及方法重写如何影响编译和运行时的行为。通过具体的代码示例,如Dog和Cat类继承自Animal抽象类,解释了成员变量、成员方法和静态方法在多态中的特性,以及向上转型和向下转型的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*多态
父类引变量指向子类对象
格式:父类类型 变量名 = new 子类类型( );

多态的前提:
1.子父类继承关系(实现关系)
2.父类引用指向子类对象
3.要有方法的重写

多态成员特点:
成员变量:编译看左边,运行也看左边
成员方法:编译看左边,运行看右边
静态方法:编译看左边,运行也看左边

向上转型和向下转型:
向上转型(小转大)
多态本身就是一个向上转型

向下转型(大转小)
直接创建的父类对象不能向下转型

多态的优缺点:
优点:提高可维护性
缺点:没有办法去访问子类特有的
*/

public abstract class Animal {
private int age;
private String color;
private String zz;
public String getZz() {
return zz;
}

public void setZz(String zz) {
	this.zz = zz;
}

public Animal() {

}



public int getAge() {
	return age;
}

public void setAge(int age) {
	this.age = age;
}

public String getColor() {
	return color;
}

public void setColor(String color) {
	this.color = color;
}

public abstract void eat(String something);

}

public class Dog extends Animal {
public void lookHome() {
System.out.println(“狗的本领是看家”);
}
@Override
public void eat(String something) {

}

}

public class Cat extends Animal {
public void catchMouse() {
System.out.println(“猫的本领是捉老鼠”);
}

@Override
public void eat(String something) {

}

}

public class test {
public static void main(String[] args) {
Animal a=new Dog();
Animal b=new Cat();
Person c=new Person();
Person d=new Person();
a.setAge(2);
a.setColor(“黑”);
a.setZz(“颜色的狗两只前腿死死的抱住”);

	b.setAge(3);
	b.setColor("灰");
	b.setZz("颜色的猫眯着眼睛侧着头");
	
	c.setAge(40);
	c.setName("老罗");
	
	d.setAge(25);
	d.setName("老李");	
	
	c.keepPet(a,"超级大骨头猛吃");
	d.keepPet(b,"吃猫粮");
	
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值