一、抽象类
首先它也是一个类,类就有基本的属性和方法。但是有时候我也子类必须实现某个方法才能算是真正我的子类。就比如我要每个动物都有吃的方法,但具体吃什么由你们决定,就是必须有,如eat()方法。这样的方法我们就成为抽象方法,定个标准的意思。
具有抽象方法的类是抽象类
定义抽象类格式
使用abstract class来定义抽象类
定义抽象类的抽象方法
使用abstract关键字来定义
如下代码示例:
public abstract class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
abstract void eat();
}
抽象类是不能实例化的,需要它的实现类才能实例化,可为实现类就是继承了抽象类,实现了全部抽象方法的类。用extends关键字
如Dog实现类
public class Dog extends Animal{
public Dog(String name) {
super(name);
}
@Override
void eat() {
System.out.println("我要吃骨头");
}
}
二、接口
首先接口和抽象类很像,都是具有抽象方法。按我们的理解,有抽象类完全满足了啊。但抽象类有个大缺陷就是只能单继承,接口可以多继承,也许因为这一缘故,才有了接口。
定义接口格式
interface xxx (xxx为接口名)
抽象方法
因为接口的方法都是抽象方法,所有可以省略abstract
实现接口 implements
class AClass implements xxx
一般什么时候定义接口呢
1、定义某一标准方法,让类如果需要这方法,可以去实现。如上面eat()。可以定义为一个接口,让动物,植物都去实现这方法
2、需要回调时定义一个接口
接口示例代码:
public interface ClickListener {
//点击事件抽象
void click();
}
这时鼓和钟都有敲击或者点击事件
钟:
public class Clock implements ClickListener{
@Override
public void click() {
System.out.println("钟敲击声音为叮");
}
}
鼓:
public class Drum implements ClickListener{
@Override
public void click() {
System.out.println("鼓敲击声音为嘣");
}
}
三、多态
讲完继承,抽象类,接口。就可以讲讲多态了
因为多态的三个必要条件
- 继承
- 重写
- 父类引用指向子类对象 如Animal a = new Dog();
示例应用代码:
if (getIView() instanceof NewMsgNoticeIView) {
getIView().showRealView();
((NewMsgNoticeIView) getIView()).onDataResult(mr.getData());
}
if (getIView() instanceof MainIView)
((MainIView) getIView()).onDataResult(mr.getData());
网友评论