2019-2-18
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();
}
}
测试结果:

浙公网安备 33010602011771号