第一题:接口实现普通手机和智能手机部分功能
父类手机类:
package com.handset;/* * 父类手机类 */public abstract class Handset { String brand; // 手机型号 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 faxx(); // 发信息方法 public abstract void tdh(); // 通电话方法}
package com.handset;/* *播放功能 */public interface bofang { public void bf();}
package com.handset;/* * 连接网络功能 */public interface shangwang { public void sw();}
package com.handset;/* * 照相功能 */public interface zhaoxiang { public void paizhao();}
智能手机类继承父类手机:
package com.handset;/* * 智能手机类 */public class AptotudeHandset extends Handset implements zhaoxiang, shangwang, bofang { @Override public void bf() { // TODO Auto-generated method stub System.out.println("开始播放音乐《》"); } @Override public void sw() { System.out.println("连接4G网络"); } @Override public void paizhao() { // TODO Auto-generated method stub System.out.println("拍照成功"); } @Override public void faxx() { // TODO Auto-generated method stub System.out.println("发送彩色短信"); } @Override public void tdh() { // TODO Auto-generated method stub System.out.println("开启视频通话"); } public AptotudeHandset(String brand,String type) { this.brand=brand; this.type=type; } public AptotudeHandset() {}}
普通手机类继承父类手机类:
package com.handset;/* * 普通手机类 */public class CommonHandset extends Handset implements bofang { @Override public void bf() { System.out.println("播放音乐!"); } @Override public void faxx() { System.out.println("发了条短信"); } @Override public void tdh() { // TODO Auto-generated method stub System.out.println("开始通话"); } public CommonHandset(String brand,String type) { this.brand=brand; this.type=type; } public CommonHandset() {}}
package com.handset;/* * 测试类 */public class Test { public static void main(String[] args) { AptotudeHandset sj1 = new AptotudeHandset("6s","苹果"); CommonHandset sj2 = new CommonHandset("老人机","诺基亚"); System.out.println("这是一台"+sj1.type+"手机"+"型号是"+sj1.brand); sj1.sw(); sj1.bf(); sj1.paizhao(); sj1.faxx(); sj1.tdh(); System.out.println("________________________________"); System.out.println("这是一台"+sj2.type+"手机"+"型号是"+sj2.brand); sj2.bf(); sj2.faxx(); sj2.tdh(); }}
输出结果图:
第二题:
package com.computer;/* * CPU接口 */public interface CPU { public String pp(); public String zp(); }
package com.computer;/* * Ems接口 */public interface Ems { public String Ems();}
package com.computer;/* * HardDisk 接口 */public interface HardDisk { public String hard();}
package com.computer;/* *创建CpuPp类继承CPU接口 */public class CpuPp implements CPU { public String pp() { return"CPU的品牌是Intel"; } public String zp() { return "主频是3.8GHz"; }}
package com.computer;/* * 创建Emss类继承Ems接口 */public class Emss implements Ems { public String Ems() { return "3000GB"; }}
package com.computer;/* * 创建HardDisks类继承HardDisk接口 */public class HardDisks implements HardDisk { public String hard() { return"8G"; }}
package com.computer;/* * 计算机类 */public class Computer{ private CPU CpuPp; // CPU接口作为类型创建属性 private Ems Emss; // Ems接口作为类型创建属性 private HardDisk HD; // HardDisk接口作为类型创建属性 /** * 组装电脑方法 */ public void zhuzhang() { System.out.println("计算机的信息如下"); System.out.println(CpuPp.pp()+CpuPp.zp()); System.out.println("硬盘的容量是"+Emss.Ems()); System.out.println("内存的容量是:"+HD.hard()); } public CPU getCpuPp() { return CpuPp; } public void setCpuPp(CPU cpuPp) { CpuPp = cpuPp; } public Ems getEmss() { return Emss; } public void setEmss(Ems emss) { Emss = emss; } public HardDisk getHD() { return HD; } public void setHD(HardDisk hD) { HD = hD; } }
package com.computer;/* * 测试类 */public class Test { public static void main(String[] args) { /** * 创建计算机对象 */ Computer co = new Computer(); /** * 多态创建CpuPp对象 */ CPU cpu = new CpuPp(); /** * 多态创建Ems对象 */ Ems em = new Emss(); /** * 多态创建HardDisk对象 */ HardDisk hd = new HardDisks(); //给属性CpuPp 赋值 不赋值的话会出现空值异常 co.setCpuPp(cpu); //给Emss属性 赋值 不赋值的话会出现空值异常 co.setEmss(em); //给HD属性 赋值 不赋值的话会出现空值异常 co.setHD(hd); //调用计算机组装方法 co.zhuzhang(); }}
输出结果图:
代码下载地址:
链接:https://pan.baidu.com/s/1uAt4PDgIb-DYYrST3H4D2Q
提取码:wqrd
课堂笔记:
接口语法:
has-a有什么功能的时候就使用接口public interface 接口名{}使用接口语法:public 类名 implements 接口名{}接口除了成员变量和抽象方法不能有其他的
抽象类和接口的特点:
相同点:抽象类和接口都不能被实列化对象 抽象类和接口都可以有抽象方法 子类必须重写其所有的抽象方法,除非其子类也是抽象类不同点:抽象类中可以有普通方法,接口只能有抽象方法(JDK1.8 之前) 抽象类中可以有普通成员变量,接口中只能有静态常量 抽象类只能被单继承,接口可以被多实现,