抽象类的作用

来源:互联网 发布:帝国cms仿站视频下载 编辑:程序博客网 时间:2024/05/29 18:07
java抽象类的作用
1.通过继承它实现多态,后期绑定,可以为将来要实现的东西做好接口,实现重用性。
2.接口就是更纯粹的抽象类
父类:A
子类:a1,a2
A obj1 = new A();
A obj2 = new B();
如果A有一个方法是show();
子类实现了show();
 那么obj1.show()就是第一个子类的show();
obj2.show()就是第二个子类的show();
多态我的理解就是在运行时表现的多种形态

比如现在想写一个test方法这个方法要调用子类的show方法,那么就可以调用
void test(A temp){
    temp.show();
}


如果想运行第一个子类的show(),就可以这样写A obj1 = new a1();
然后test(obj1);
如果想运行第二个子类的show(),A obj2 = new a2();
test(obj2);

这样那个抽象类就类似一个接口,可以用这个接口来产生比如过一阵又需要写一个新的类,那么

class C extends A{

   void show(){}
}
A obj3 = new C();
test(obj3);

这样只写了一个类,声明了一个对象而没有改变原来的代码,直接调用新写的类即可,完成代码的重用。以后再想写新的类只需再这么做而不必改动原来的代码。这个接口就好像能预测将来发生的事,将来完成的任务只要满足这个接口就可以调用这个函数而不必重写

由abstract修饰的方法为抽象方法,抽象方法即只有方法的定义,没有方法体实现,用一个分号结尾。即方法五要素中,抽象方法缺少了一个要素(即:方法体)。也可以将抽象方法理解为不完整的方法。

若将抽象方法包含在类中,则该类也应该为抽象的,可以理解为,该类也不完整。抽象类由abstract关键字声明

抽象类是不能实例化对象的,而一个类不能实例化是没有意义的,所以,需要定义类来继承抽象类,而如果一个类继承了抽象类,则其必须重写其抽象方法(变不完整为完整),除非该类也声明为抽象类

需要注意一点:abstract和final关键字不可以同时用于修饰一个类,因为final关键字使得类不可继承,而abstract修饰的类如果不可以继承将没有任何意义。两者放在一起,会起冲突。

一个类继承抽象类后,必须实现其抽象方法,不同的子类可以有不同的实现。

public class test22 {
public static void main(String[] args) {
Printer p1=new HBPrint();
p1.open();
p1.print();
p1.close();

Printer p2=new CanonPrint();
p2.open();
p2.print();
p2.close();

}
}
abstract class Printer{
void open(){
System.out.println("open");
}
void close(){
System.out.println("close");
}
abstract void print();
}
class HBPrint extends Printer{
void print(){//复写Printer的print()方法
System.out.println("I am is HBPrint");
}
}
class CanonPrint extends Printer{
void print(){//复写Printer的print()方法
System.out.println("I am is CanonPrint");
}
}


定义抽象类的意义在于:

  • 为其子类提供一个公共的类型(父类引用指向子类对象);
  • 封装子类中的重复内容(成员变量和方法);
  • 定义有抽象方法,子类虽然有不同的实现,但该方法的定义是一致的。(子类需要实现此抽象方法)。

0 0
原创粉丝点击