1.问题
设计一个公示栏,希望设计的公告栏可以展示许多学校的公告语
把实现接口的类的实例引用赋值给接口变量,该接口变量就可以回调类重写的接口方法
2.方法
需要用showAnnouncement()和getCorpName()
代码清单1
package org.example;
public interface Announcement {
public void showAnnouncement();
public String getCorpName();
}
代码清单2
package org.example;
public class AnnouncementBoard {
Announcement announce;//接口变量
public void setAnnouncement(Announcement announce){
this.announce=announce;//初始化变量
}
public void show(){
if(announce!=null){
System.out.println("公告栏显示"+announce.getCorpName()+"学校的公告语");
announce.showAnnouncement();//回调类重写的接口类的方法来显示学校的公示栏
}
else{
System.out.println("公告栏无公告");
}
}
}
代码清单3
package org.example;
public class mingde implements Announcement {//mingde实现Announcement接口
public void showAnnouncement(){//为了实现Announcement接口的类,重写showAnnouncement方法
System.out.println("周一要升国旗");
}
public String getCorpName(){
return"明德";//返回学校名称
}
}
代码清单4
package org.example;
public class chuangxin implements Announcement {
@Override
public void showAnnouncement(){
System.out.println("周二要开会");
}
@Override
public String getCorpName() {
return "创新";
}
}
代码清单5
package org.example;
public class leixiaohong {
public static void main(String args[]){
AnnouncementBoard board=new AnnouncementBoard();//创建对象
board.setAnnouncement(new mingde());
board.show();//调用方法
board.setAnnouncement(new chuangxin ());
board.show();
}
}
3.结语
把Announcement接口、AnnounceBoard类以及mingde类、chuangxin类看作一个小型的开发框架,将leixiaohong看作一个用户程序,那么满足“开-闭”原则,这个对于用户的需求就比较容易维护。