1、在JAVA中,继承只能是单继承,一个子类只能有一个父类
2、接口特性:
A、接口不可以被实例化
B、实现类必须实现接口的所有方法
C、实现类可以实现多个接口
implement、多个接口使用逗号隔开
D、接口中的变量都是静态常量(public static final)
3、抽像类和接口的区别
相同点:抽象类和接口都不能被实例化对象
抽象类和接口都可以有抽象方法
子类必须重写其所有的抽象方法,除非子类也是抽象类
不同点:抽象类中可以有普通方法,接口中只能有抽象方法(jdk1.8之前 )
抽象类中可以有普通成员变量,接口中只能有静态常量
抽象类只能被单继承,接口可以被多实现
作业:
1、使用接口实现手机,原始手机可以发短信,通电话。随着发殿,手机增加了功能:音频、视频播放、拍照、上网。
package com.java_18_phone; /** * 手机类 * @author Administrator * */ public abstract class Phone { private String brand; private String type; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public String getType() { return type; } public void setType(String type) { this.type = type; } public abstract void print(); public abstract void send(); public abstract void call(); }
package com.java_18_phone; public interface Line { public void line(); }
package com.java_18_phone; public interface Photo { public void photo(); }
package com.java_18_phone; public interface Play { public void play(); }
package com.java_18_phone; /** * 普通手机类 * @author Administrator * */ public class Common extends Phone implements Play { @Override public void play() { // TODO Auto-generated method stub System.out.println("播放音频.."); } @Override public void send() { // TODO Auto-generated method stub System.out.println("正在发送文字信息..."); } @Override public void call() { // TODO Auto-generated method stub System.out.println("正在打电话..."); } @Override public void print() { // TODO Auto-generated method stub System.out.println("这是一款型号为"+super.getType()+"的"+super.getBrand()+"手机:"); } }
package com.java_18_phone; /** * 智能手机类 * @author Administrator * */ public class Capacity extends Phone implements Line, Photo,Play { @Override public void photo() { // TODO Auto-generated method stub System.out.println("拍照成功.."); } @Override public void line() { // TODO Auto-generated method stub System.out.println("已经连网.."); } @Override public void send() { // TODO Auto-generated method stub System.out.println("发送带图片与文字的信息..."); } @Override public void call() { // TODO Auto-generated method stub System.out.println("开启视频通话..."); } @Override public void play() { // TODO Auto-generated method stub System.out.println("正在播放视频《小时代》..."); } @Override public void print() { // TODO Auto-generated method stub System.out.println("这是一款型号为"+super.getType()+"的"+super.getBrand()+"智能手机:"); } }
package com.java_18_phone; public class Test { public static void main(String[] args) { Common p = new Common(); p.setBrand("爱国者"); p.setType("G555"); p.print(); p.call(); p.send(); p.play(); System.out.println(); Capacity c = new Capacity(); c.setBrand("炎火"); c.setType("J666"); c.print(); c.line(); c.photo(); c.call(); c.send(); c.play(); } }
测试结果:
2、使用接口组装一台计算机:CPU、硬盘、内存
package com.cpu; /** * CPU * @author Administrator * */ public interface Cpu { public String type(); public double basic(); }
package com.cpu; public class AmdCpu implements Cpu { public String type() { return "AMD"; } public double basic() { return 3.8; } }
package com.cpu; public class InterCpu implements Cpu { public String type() { return "Inter"; } public double basic() { return 2.4; } }
package com.hard; /** * 硬盘 * @author Administrator * */ public interface Hard { public String type(); public int capacity(); }
package com.hard; public class XiJie implements Hard { public String type() { return "希捷"; } public int capacity() { return 750; } }
package com.hard; public class XiShu implements Hard { public String type() { return "西数"; } public int capacity() { return 500; } }
package com.memory; /** * 内存 * @author Administrator * */ public interface Memory { public String type(); public int size(); }
package com.memory; public class JinShiDun implements Memory { public String type() { return "金士顿"; } public int size() { return 8; } }
package com.memory; public class SanXing implements Memory { public String type() { return "三星"; } public int size() { return 16; } }
package com.computer; import com.cpu.Cpu; import com.hard.Hard; import com.memory.Memory; public class Computer { private Cpu c; private Hard h; private Memory m; public Cpu getC() { return c; } public void setC(Cpu c) { this.c = c; } public Hard getH() { return h; } public void setH(Hard h) { this.h = h; } public Memory getM() { return m; } public void setM(Memory m) { this.m = m; } public void info() { System.out.println("这台电脑的配置是:"); System.out.println("CPU型号:"+c.type()+",主频是:"+c.basic()+"Hz"); System.out.println("硬盘型号:"+h.type()+",容量是:"+h.capacity()+"G"); System.out.println("内存型号:"+m.type()+",大小是:"+m.size()+"G"); } }
package com.computer; import com.cpu.Cpu; import com.cpu.InterCpu; import com.hard.Hard; import com.hard.XiJie; import com.memory.Memory; import com.memory.SanXing; public class Test { public static void main(String[] args) { Computer cc = new Computer(); Cpu cpu = new InterCpu(); Hard hard = new XiJie(); Memory memory = new SanXing(); cc.setC(cpu); cc.setH(hard); cc.setM(memory); cc.info(); } }
测试结果: