面向抽象编程
1.对象的向上转型:上转型对象不能操作子类新增的成员变量与方法父类 f=new 子类();2.Open-Closed Principle:系统应当对扩展开放,对修改关闭。(怎么办?面向抽象和接口啊!)3.面向抽象编程:设计类时,不该让类面向具体的类,而是面向抽象类。例子:设计抽象类SIM,以便扩展具体的运营商
public abstract class SIM {protected String number;protected String type;public abstract void setNumber(String number);public abstract void setType();public void show(){System.out.println(“类型:”+type+“号码”+number);}
设计手机类,重点是在手机类中添加SIM抽象类,等待子类具体实现。publicclass MobliePhone {private SIM sim;publicvoid setSIM(SIM sim){ this.sim=sim;}publicvoid showMessage(){sim.show();}
实现两种类型的SIM卡,设为移动和联通。(Type类型可以在构造函数中实现)
publicclass yidong extends SIM{@Override publicvoid setNumber(String number) { this.number=number;}@Override publicvoid setType() { this.type=“联通”;}主函数如下,若需要扩展SIM卡,只要继承SIM抽象类即可。如此设计即符合Java开闭原则。publicstaticvoid main(String[] args) {MobliePhone mp=new MobliePhone();SIM sim=new yidong();sim.setNumber(“123456789”);sim.setType();mp.setSIM(sim);mp.showMessage();sim=new liantong();sim.setNumber(“987654321”);sim.setType();mp.setSIM(sim);mp.showMessage();}
面向接口编程
1.接口:接口中只有抽象方法和常量,抽象方法一定是public,常量一定是public static,你看不到是因为系统隐藏了。类实现接口,若没有重写接口中的全部方法,这个类就是一个抽象类。接口要求一些类具有相同名称的方法,但不强迫这些类具有相同的父类。接口无法调用类中非接口方法。(很关键)如果一个方法的参数是接口类型,就可以将实现该接口的类的实例的引用传递给该接口参数,这个接口参数就可以回调类实现的接口方法。2.面向接口编程:核心思想是接口回调,与面向抽象编程有一定的相似性。例子:设计一个广告的接口。public interface Advertisement {设计Televison类用于播放广告,重点是设置接口的参数回调。
publicclass Televison {Advertisement adv;publicvoid setAdv(Advertisement adv){ this.adv=adv;}publicvoid advertise(){adv.showCompany();adv.showMess();}实现具体的广告类publicclass naobaijin implements Advertisement{@Override publicvoid showMess() {System.out.println(“收礼只收脑白金”);}@Override publicvoid showCompany() {System.out.println(“白金集团”);}
主函数如下,若需要扩展广告,只要实现Advertisement接口即可。如此设计即符合Java开闭原则。
main(String[] args) {Televison tv
Java学习
最新推荐文章于 2021-02-16 08:38:21 发布