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();
	}
}

  测试结果:

 

猜你喜欢

转载自www.cnblogs.com/chenxj/p/10394863.html