抽象类和接口的特点:
相同点:抽象类和接口都不能被实例化
抽象类和接口都可以有抽象方法
子类必须重写其所有的抽象方法,除非子类也是抽象方法
不同点:抽象类中可以有普通方法,接口中只能有抽象方法(jdk1.8之前的版本)
抽象类中可以有普通成员变量,接口中只能有静态常量
抽象类中只能被单继承,接口可以被多实现
作业:
1、第一题:
package com.jiekou2; //创建一个抽象的手机类 public abstract class HandSet { private String brand; private String type; public HandSet() {} public HandSet(String brand, String type){ this.brand = brand; this.type = 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 void showInfo() { System.out.println("这是一台"+brand+type); } //收发短信 public abstract void sendMess(); //打电话 public abstract void call(); }
package com.jiekou2; public class ZhinengPhone extends HandSet implements TakePhpto,NextWorKing,Playing { public ZhinengPhone() {} public ZhinengPhone(String brand,String type) { super(brand,type); } @Override public void playVideo(String name) { // TODO Auto-generated method stub System.out.println("播放视频《"+name+"》"); } @Override public void nextWorking() { // TODO Auto-generated method stub System.out.println("上网"); } @Override public void takePhotos() { // TODO Auto-generated method stub System.out.println("拍照"); } @Override public void sendMess() { // TODO Auto-generated method stub System.out.println("发送文字+图片+视频的信息"); } @Override public void call() { // TODO Auto-generated method stub System.out.println("视频通话"); } }
package com.jiekou2; //普通手机类 public class CommonPhone extends HandSet implements Playing{ public CommonPhone() {} public CommonPhone(String brand,String type) { super(brand,type); } @Override public void playVideo(String name) { // TODO Auto-generated method stub System.out.println("播放音频:《"+name+"》"); } @Override public void sendMess() { // TODO Auto-generated method stub System.out.println("发送文字短信"); } @Override public void call() { // TODO Auto-generated method stub System.out.println("语音通话"); } }
package com.jiekou2; //上网 public interface NextWorKing { void nextWorking(); }
package com.jiekou2; //拍照 public interface TakePhpto { void takePhotos(); }
package com.jiekou2; //播放 public interface Playing { void playVideo(String name); }
package com.jiekou2; public class Test { public static void main(String[] args) { CommonPhone common = new CommonPhone("诺基亚" ,"g110"); common.call(); common.sendMess(); common.playVideo("钞票"); common.showInfo(); System.out.println("**********************************"); ZhinengPhone zhi = new ZhinengPhone("华为" ,"p20"); zhi.call(); zhi.sendMess(); zhi.playVideo("知否,知否"); zhi.nextWorking(); zhi.takePhotos(); zhi.showInfo(); } }
2、第二题:
package com.cpu; //定义一个CUP的接口 public interface CPU { public String type(); public double zhuPin(); }
package com.cpu; //定义一个品牌类,实现CPU接口 public class Type implements CPU { @Override public String type() { // TODO Auto-generated method stub return "Intel"; } @Override public double zhuPin() { // TODO Auto-generated method stub return 3.8; } }
package com.yingpan; //定义一个硬盘接口 public interface YingPan { public String rongLiang(); }
package com.yingpan; //定义一个硬盘2的类,实现硬盘接口 public class RongLiang2 implements YingPan { @Override public String rongLiang() { // TODO Auto-generated method stub return "3000GB"; } }
package com.neicun; //定义一个内存接口 public interface NeiCun { public String rongLiang(); }
package com.neicun; //定义一个容量类,实现内存接口 public class RongLiang implements NeiCun{ @Override public String rongLiang() { // TODO Auto-generated method stub return "4GB"; } }
package com.computer; import com.cpu.CPU; import com.neicun.NeiCun; import com.yingpan.YingPan; //创建一个电脑类 public class Computer { private CPU cpu; private NeiCun neiCun; private YingPan yingPan; public CPU getCpu() { return cpu; } public void setCpu(CPU cpu) { this.cpu = cpu; } public NeiCun getNeiCun() { return neiCun; } public void setNeiCun(NeiCun neiCun) { this.neiCun = neiCun; } public YingPan getYingPan() { return yingPan; } public void setYingPan(YingPan yingPan) { this.yingPan = yingPan; } public void showInfo() { System.out.println("计算机的信息如下:"); System.out.println("CPU的品牌是:"+cpu.type()+",主频是:"+cpu.zhuPin()+"GHz"); System.out.println("硬盘容量是:"+yingPan.rongLiang()); System.out.println("内存容量是:"+neiCun.rongLiang()); } }
package com.computer; import com.cpu.CPU; import com.cpu.Type; import com.neicun.NeiCun; import com.neicun.RongLiang; import com.yingpan.RongLiang2; import com.yingpan.YingPan; //创建一个测试 public class Test { public static void main(String[] args) { CPU type = new Type(); NeiCun rongliang = new RongLiang(); YingPan rongliang2 = new RongLiang2(); Computer com = new Computer(); com.setCpu(type); com.setYingPan(rongliang2); com.setNeiCun(rongliang); com.showInfo(); } }
原文:https://www.cnblogs.com/qq993411626------/p/10396318.html