package Week4Door;
public interface Lock {
public void unlock();//开锁
public void locked();//上锁
}
package Week4Door;
public interface Music {
public void sing();
}
package Week4Door;
public interface photo {
}
package Week4Door;
public interface TakePhoto {
public void photo();
}
package Week4Door;
public abstract class Door {
public abstract void open();//开门
public abstract void close();//关门
}
package Week4Door;
public class TheftproofDoor extends Door implements Lock,Music,TakePhoto{
@Override
public void open() {
System.out.println("推一下开门");
}
@Override
public void close() {
System.out.println("拉一下关门");
}
@Override
public void unlock() {
System.out.println("输入6位数的密码开锁");
}
@Override
public void locked() {
System.out.println("输入6位数的密码上锁");
}
@Override
public void sing() {
System.out.println("是谁在唱歌");
}
@Override
public void photo() {
System.out.println("记录美好时光");
sing();
}
}
package Week4Door;
public class DemoDoor {
public static void main(String[] args) {
//买菜
//开门
//关门
//上锁
//使用多态方式实现买菜的过程
//只能调用父类或者子类重写父类的相关方法,不能调用子类特有的方法
//想要调用子类特有
//1-向下类型转换
Door d=new TheftproofDoor();//向上转型
d.open();
d.close();
TheftproofDoor t=(TheftproofDoor)d;
t.locked();
t.unlock();
t.photo();
System.out.println("买菜-----------------");
//开锁
//开门
//关门
t.unlock();
t.photo();
t.open();
t.close();
}
}
package Week4Handset;
public interface Network {
public void networkConn();
}
package Week4Handset;
public interface PlayWiring {
public void play();
}
package Week4Handset;
public interface TakePictures {
public void takePictures();
}
package Week4Handset;
public class AptitudeHandset extends Handset implements TakePictures,Network,PlayWiring{
@Override
public void networkConn() {
System.out.println("您已进入5G信号覆盖区域;5G网络已连接,可随时sufring");
}
@Override
public void play() {
System.out.println("您已打开播放器,正在为您准备优质音频");
}
@Override
public void takePictures() {
System.out.println("前后2个亿,拍照更清晰,正在为您记录美好时光");
}
}
package Week4Handset;
public class CommonHandset extends Handset implements PlayWiring{
@Override
public void play() {
System.out.println("正在为您播放黑白复古音频");
}
}
package Week4Handset;
public class DemoHandset {
public static void main(String[] args) {
Handset h=new AptitudeHandset();
System.out.println("您的2060牌华人手机傻妞正在为你服务");
h.call();
h.info();
h.sendInfo();
AptitudeHandset a=(AptitudeHandset)h;
a.takePictures();
a.networkConn();
a.play();
Handset h2=new CommonHandset();
System.out.println("-----------------------------------");
System.out.println("您的1980s傻大个大哥大正在为您服务");
h2.call();
h2.info();
h2.sendInfo();
CommonHandset c=(CommonHandset)h2;
c.play();
}
}
运行结果:
package Printers2;
public interface Paper {
public String paperSize();
}
package Printers2;
public interface InkBox {
public String boxColor();
}
package Printers2;
public class ColorfulInkBox implements InkBox{
public String boxColor() {
return "彩色";
}
}
package Printers2;
public class BlackInkBox implements InkBox{
public String boxColor( ) {
return "黑白";
}
}
package Printers2;
import lombok.Data;
public class B5Paper implements Paper{
public String paperSize() {
return "B5";
}
}
package Printers2;
public class A4Paper implements Paper{
public String paperSize() {
return "A4";
}
}
package Printers2;
import lombok.Data;
@Data
public class Printer {
private InkBox inkBox;
private Paper paper;
public void print() {
System.out.println("正在使用"+inkBox.boxColor()+"墨盒在"+paper.paperSize()+"纸上打印");
}
}
package Printers2;
public class DemoPrinter {
public static void main(String[] args) {
InkBox blackinkBox=new BlackInkBox();
InkBox colorinkbox=new ColorfulInkBox();
// String blackInkBox=inkBox.boxColor();
Paper paper=new A4Paper();
Paper b5Paper=new B5Paper();
Printer printer=new Printer();
printer.setInkBox(colorinkbox);//不set会出现空指针异常
printer.setPaper(paper);//
printer.print();
Printer printer2=new Printer();
printer2.setInkBox(blackinkBox);
printer2.setPaper(b5Paper);//
printer2.print();
Printer printer3=new Printer();
printer3.setInkBox(colorinkbox);
printer3.setPaper(b5Paper);//
printer3.print();
Printer printer4=new Printer();
printer4.setInkBox(blackinkBox);
printer4.setPaper(paper);//
printer4.print();
}
}
运行结果: