抽象类:是指类由abstract修饰,最大特点是包含抽象方法,抽象方法是只声明而未实现(没有方法体的方法)。抽象方法定义由abstract完成,抽象类由abstract关键字声明
关于抽象类需要注意一下几点:
1,抽象类中的抽象方法只声明,不实现
2,子类在继承抽象类时(子类为非抽象类)必须继承抽象类等的所有抽象方法。
3,抽象类中可以没有其他非抽象方法,但是反过来含有抽象方法的类必然是抽象类。
4,抽象类对象可以使用对象的向上转型方式,通过子类来进行实例化操作。
abstract class A{
private String info="Hello World";
public void print(){
System.out.println(info);
}
public abstract void get();
}
下例为错误的使用抽象类:
class B{
puclic static void main(){
A a=new A() // 抽象类不能直接实例化
}
}
正确的使用:
class C extends A{
puclic static void main(args[]){
A a=new C();
a.get();
}
puclic abstract void get(){
System.out.println("Hello ");
}
}
Result: Hello
具体应用中抽象类对应使用的设计模式是模板模式
例如:
abstract class Animal{
public abstract void eat();
public abstract void sleep();
public abstract void play();
}
class Dog{
public void eat(){
System.out.println("狗吃饭.......");
}
public void sleep(){
System.out.println("狗睡觉......");
}
public void play(){
}
}
class People{
public void eat(){
System.out.println("人吃饭......");
}
public void sleep(){
System.out.println("人在睡觉....");
}
public void play(){
System.out.println("人在玩......");
}
}
例外关于抽象类的模板设计模式的典型例子就是servlet
servlet继承HttpServlet,就会继承doGet()和doPost()方法