Java基础——多态(接口)

it2024-07-22  40

多态(接口)

在java中继承是单继承关系,若想拥有更多父类,考虑使用接口进行实现

用法:使用interface来修饰 接口可以包含多个方法,并且方法均为抽象方法,且不可实现,其抽象方法的实现必须在子类中引入接口进行实现

特征:

接口中的所有方法都是抽象方法,不可实现接口中所有方法和变量的访问修饰权限是public,而不是default接口不能被实例化,必须由子类实现后通过子类实例化接口的子类必须实现接口中的所有方法(毕竟只包含抽象方法),,,不同于抽象类(抽象类有抽象方法也有普通方法,,其中子类只需要实现抽象方法) 即抽象方法都必须在子类中进行实现子类可以拥有多个接口接口中的变量都是静态常量,,即在接口中的变量前面都默认拥有 public static final 关键字可以定义抽象类实现接口中的部分方法,而子类则需要将抽象方法全部实现

接口VS抽象类:

接口中全为抽象方法,让规范和具体实现很好的分离,降低耦合性接口是规范,表示一种能力,“如果你是…则必须…”(如果你是飞机,就必须能飞)

CPU(接口):

package abd.ProgInterface; public interface CPU { String brand(); int Hz(); }

HighDisk(接口):

package abd.ProgInterface; public interface HighDisk { String capacity(); }

CPU接口实现:

package abd.ProgInterface; public class IntelCPU implements CPU { @Override public String brand() { return "Intel"; } @Override public int Hz() { return 3; } } package abd.ProgInterface; public class LongxinCPU implements CPU { @Override public String brand() { return "鲲鹏"; } @Override public int Hz() { return 5; } }

HighDisk接口实现:

package abd.ProgInterface; public class HhighDisk implements HighDisk { @Override public String capacity() { return "500000GB"; } } package abd.ProgInterface; public class LowDisk implements HighDisk { @Override public String capacity() { return "20000GB"; } }

Computer类(逻辑实现模块):

package abd.ProgInterface; public class Computer { public Computer(CPU cpu,HighDisk disk){ System.out.println("品牌:"+cpu.brand()+" 主频:"+cpu.Hz()+"GHz"); System.out.println("硬盘容量:"+disk.capacity()); } }

测试:

package abd.ProgInterface; public class Test { public static void main(String[] args) { //接口的多态实现,接口不能直接实例化,必须有相应的子类进行实现操作,通过子类进行实例化相应接口 //CPU cpu = new LongxinCPU(); CPU cpu = new IntelCPU(); HighDisk disk = new LowDisk(); Computer computer = new Computer(cpu,disk); } }
最新回复(0)