简单多态代码

java语言3大特征之一——多态。
多态为开发提供了很多的便利,为可扩展性提供很大的支持。
public enum Sex {
MALE,FEMALE;
}

Person类:
public class Person {

private String name;
private int age;

public Person() {
}

public Person(String name, int age) {
this.name = name;
this.age = age;
}

public void say() {
System.out.println(this.getName() + ":" + this.getAge());
System.out.println("in base");
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

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

Person子类,带有sex属性:
public class PersonWithSex extends Person {
Sex sex;

PersonWithSex() {

}

PersonWithSex(int age, String name, Sex sex) {
super(name, age);
this.sex = sex;
}

public Sex getSex() {
return sex;
}

public void setSex(Sex sex) {
this.sex = sex;
}

public void say() {
System.out.println(this.getName() + ":" + this.getAge() + ":" + this.getSex());
System.out.println("in sub");
}
}

两者均有say()方法。
下面是测试代码:
public class ExtendsTest {

/**
* @param args
*/
public static void main(String[] args) {
Person p1 = new Person("jin", 10);
PersonWithSex pws = new PersonWithSex(20, "gui", Sex.MALE);
Person p2 = new PersonWithSex(30, "randy", Sex.MALE);
p1.say();
pws.say();
p2.say();
}

}


输出结果:
jin:10
in base
gui:20:MALE
in sub
randy:30:MALE
in sub


解:java的引用变量分为编译时类型和运行时类型。上边的p2引用,在编译时属于Person类型,而运行时属于Person子类PersonWithSex类型。所以p2只能调用Person类中的方法,如果试着调用其子类独有的方法,就会出现编译错误。
当我们想再有一个Person的子类时,同样定义了say()方法,这样只要在创建对象时创建新类型的对象,其他的地方就无需改变,这就是多态的好处。还有很多多态的好处,如范型等,慢慢研究喽
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值