(笔记)多态:向上转型,局部变量实现多态
程序员文章站
2022-05-12 14:01:35
...
主要体现在,调用时通过:父类名 实例名=new 子类名(形参);
将父类实例化为子类(本身还是父类实例),再使用这个父类实例去调用父类中的方法(或属性);
此时实际上发生作用的是子类中重写的方法(或属性)。
以下是例题:
以下类都在同一包中:
package ch13.day0801.zy.zy02;
public class Test {
public static void main(String[] args) {
Printer p=new DotMatrixPrinter("慢","差","高");
p.print();
p=new InkpetPrinter("一般","一般","一般");
p.print();
p=new LaserPrinter("快","好","低");
p.print();
}
}
结果为:
针式打印机--打印速度慢,效果差,噪音高
喷墨打印机--打印速度一般,效果一般,噪音一般
激光打印机--打印速度快,效果好,噪音低
package ch13.day0801.zy.zy02;
public class DotMatrixPrinter extends Printer {
@Override
public void print() {
System.out.println("针式打印机--打印速度"+this.getSpeed()+",效果"+this.getEffect()+",噪音"+this.getNoise());
}
//构造方法
public DotMatrixPrinter() {}
public DotMatrixPrinter(String speed, String effect, String noise) {
super(speed,effect,noise);
}
}
package ch13.day0801.zy.zy02;
public class InkpetPrinter extends Printer {
@Override
public void print() {
System.out.println("喷墨打印机--打印速度"+this.getSpeed()+",效果"+this.getEffect()+",噪音"+this.getNoise());
}
//构造方法
public InkpetPrinter() {}
public InkpetPrinter(String speed, String effect, String noise) {
super(speed,effect,noise);
}
}
package ch13.day0801.zy.zy02;
public class LaserPrinter extends Printer {
@Override
public void print() {
System.out.println("激光打印机--打印速度"+this.getSpeed()+",效果"+this.getEffect()+",噪音"+this.getNoise());
}
//构造方法
public LaserPrinter() {}
public LaserPrinter(String speed, String effect, String noise) {
super(speed,effect,noise);
}
}
package ch13.day0801.zy.zy02;
public abstract class Printer {
private String speed;
private String effect;
private String noise;
public abstract void print();
//构造方法
public Printer(){}
public Printer(String speed, String effect, String noise) {
super();
this.speed = speed;
this.effect = effect;
this.noise = noise;
}
//get set
public String getSpeed() {
return speed;
}
public void setSpeed(String speed) {
this.speed = speed;
}
public String getEffect() {
return effect;
}
public void setEffect(String effect) {
this.effect = effect;
}
public String getNoise() {
return noise;
}
public void setNoise(String noise) {
this.noise = noise;
}
}
上一篇: 对定义局部变量位置的思考
下一篇: 香港大屿山好玩吗 香港大屿山游玩攻略