[作业1]
------------------------------------
使用抽象类和接口实现适配器模式设计。涉及的类和接口分别为ButtonListener(接口),
其中含有click() / dbclick() / keyUp() / keyDown()等方法。
ButtonAdapter(按钮适配器类),适配器中对非click()方法进行默认实现。
Button类中添加addListener(ButtonListener l)方法。
interface ButtonListener
{
abstract public void onClick();
abstract public void onDbClick();
abstract public void onKeyUp();
abstract public void onKeyDown();
}
//实现不常用的方法 --剩下就是常用的方法,让其子类去实现 ,故声明为抽象类
abstract class ButtonAdapter implements ButtonListener
{
public void onDbClick()
{
}
public void onKeyUp()
{
}
public void onKeyDown()
{
}
}
class Button
{
ButtonListener lst;
public void addButtonListener(ButtonListener lst)
{
this.lst = lst ;
}
//
public void click()
{
lst.onClick();
}
}
//class myListener extends ButtonAdapter
//{
// public void onClick()
// {
// System.out.println("Click...");
// }
//}
class InterfaceListenerDemo
{
public static void main(String[] args)
{
Button btn = new Button();
//myListener lst = new myListener();
//btn.addButtonListener(lst);
btn.addButtonListener(new ButtonAdapter(){
public void onClick()
{
System.out.println("匿名内部类 Click...");
}
});
btn.click();
Button btn2 = new Button();
btn2.addButtonListener(new ButtonAdapter(){
public void onClick()
{
System.out.println("第二个按钮 Click...");
}
});
btn2.click();
}
}
[作业2]
------------------------------------
阐述什么是多态。
为什么函数可以覆盖,而属性不能覆盖?
定义:某一类事物的多种存在形态。
对继承的类来讲,使用父类类型引用子类的对象。
对于接口来说,可以使用接口引用实现了该接口的类所创建的对象。
属性是资产,容纳数据的地方,函数是行为,不容纳和存储数据,所以函数可以被覆盖,而属性不能。