java多态向上转型_java 多态(向上转型)

多态的定义与使用格式

多态的定义格式:就是父类的引用变量指向子类对象

父类类型  变量名 = new 子类类型();

变量名.方法名();

普通类多态定义的格式

父类 变量名 = new 子类();

如: class Fu {}

class Zi extends Fu {}

//类的多态使用

Fu f = new Zi();

式抽象类多态定义的格

抽象类 变量名 = new 抽象类子类();

如: abstract class Fu {

public abstract void method();

}

class Zi extends Fu {

public void method(){

System.out.println(“重写父类抽象方法”);

}

}

//类的多态使用

Fu fu= new Zi();

接口多态定义的格式

接口 变量名 = new 接口实现类();

如: interface Fu {

public abstract void method();

}

class Zi implements Fu {

public void method(){

System.out.println(“重写接口抽象方法”);

}

}

//接口的多态使用

Fu fu = new Zi();

注意事项

同一个父类的方法会被不同的子类重写。在调用方法时,调用的为各个子类重写后的方法。

如 Person p1 = new Student();

Person p2 = new Teacher();

p1.work(); //p1会调用Student类中重写的work方法

p2.work(); //p2会调用Teacher类中重写的work方法

当变量名指向不同的子类对象时,由于每个子类重写父类方法的内容不同,所以会调用不同的方法。

public classPerson {public voideat() {

System.out.println("人吃饭");

}

}

public class Student extendsPerson{public voideat() {

System.out.println("学生吃饭");

}

}

public abstract classAnimal {public abstract voidsleep() ;

}

public class Cat extendsAnimal{public voidsleep() {

System.out.println("猫趴着睡觉");

}

}

public interfaceDrinking {public abstract voiddrink();

}

public class Pig implementsDrinking{public voiddrink() {

System.out.println("小猪喝酒");

}

}

public classDemo01 {public static voidmain(String[] args) {//1.多态:子类对象指向父类引用变量(普通类之间的多态)

Person p=newStudent();

p.eat();//2.抽象类与普通类的多态(抽象类可利用多态创建普通对象)

Animal a=newCat();

a.sleep();//3.接口与普通类之间的多态(子类必须是普通类)

Drinking d=newPig();

d.drink();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值