一、抽象类的基本概念
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类可以包含零至多个普通方法,也可以含零至多个抽象方法。
二、抽象类的特征
1.包含抽象方法的类就会自动变成抽象类,必须以abstract关键字声明
2.不论抽象类是否含抽象方法,其都不允许实例化。
3.从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。
4.父类是抽象类,且子类不想成为抽象类,那么子类必须将父类中的所有抽象方法重写为带方法体的普通方法,否则子类仍必须是抽象类。
三、接口
接口的通用格式:public interface 接口名称 { (方法头...) }(!注意只需写出方法头即可不需要写abstract关键字)
在接口中的方法虽然没有说明是抽象方法,但默认其为public以及是抽象方法。
接口和所有方法都是抽象方法的抽象类非常类似。
1.它不能被实例化。
2.在接口中所列的所有方法必须在别处被重写。
四、二者的主要区别点
在接口中的所有属性都为 public、final 和 static.即接口属性必须赋予初始值。(不懂final和static的意思的可以在csdn中搜索查看)
自然有了接口,便需要如何去实现:
如果一个类要实现接口,它需要在类头中使用implements 关键字。格式为:public class 子类名 extends 父类名 implements 接口名。(接口继承写在类的后面,当然也可以不继承父类,即可选择的)。
相较于类来说接口还有一个区别便是它可以实现一个类继承多个接口,而子类往往只能继承一个父类。但是,当一个类实现多个接口,它必须实现所有接口中的方法。格式为:public class MyClass implements Interface1,Interface2,Interface3。
同类一样,接口与接口之间也有着继承的关系,格式:public interface 接口名 extends 父接口1,父接口2,...{}.(!注意但是接口只能继承接口不能继承类)。
接口与多态性:前面说到接口是不可以被实例化的,但是在java中允许创建接口类型的引用变量。即:interface 物体名称=new 继承自interface的类();
以下代码为如何创建subject类
import java.util.ArrayList; import java.util.List; public class Subject{ private Listobservers = new ArrayList<0bserver>(); private int state; public int getState() { return state; } public void setState(int state) { this.state = state; notifyAll0bservers(); } public void attach(Observer observer){ observers.add(observer); } public void notifyAll0bservers(){ for (Observer observer : observers) { observer.update(); } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)