多态指的是父类引用指向子类对象或者接口引用指向实现类的对象。
格式
父类名称 对象名=new 子类名字();
接口名称 对象名=new 实现类名();
- 对象的向上转型,一定是安全的。但是无法调用子类或者实现类特有的方法,转型的时候可以理解为子类或者实现类将与父类共同的方法赋予父类。但是无法将子类特有的方法赋予父类。
- 对象的向下转型,可以将父类再重新转为真实的子类对象。
- 练习笔记本电脑的实现
//USB public interface USB { public abstract void open(); public abstract void close(); } //Computer public class Computer { public void powerOn(){ System.out.println("打开电脑"); } public void powerOff(){ System.out.println("关闭电脑"); } public void UserDevice(USB usb){ usb.open(); usb.close(); } } //Mouse public class Mouse implements USB{ @Override public void open() { System.out.println("打开鼠标"); } @Override public void close() { System.out.println("关闭鼠标"); } } //Keyboard public class Keybord implements USB{ @Override public void open() { System.out.println("打开键盘"); } @Override public void close() { System.out.println("关闭键盘"); } } //Test public class Test { public static void main(String[] args) { Computer c=new Computer(); c.powerOn(); USB mouse=new Mouse(); c.UserDevice(mouse); Keybord k=new Keybord(); c.UserDevice(k); c.powerOff(); } }