抽象类、最终类和接口

来源:互联网 发布:微课录制软件下载 编辑:程序博客网 时间:2024/05/16 14:27

1.抽象类(abstract class)

抽象类:如果一个类中包含抽象方法,那么这个类就是抽象类。

  1. 通过把类或者类中的某些方法声明为abstract来表示一个类是抽象类;

  2. 抽象类不能够被实例化;(实例化必须加载类,因为不知道抽象方法的方法体,所以不能被实例化)

  3. 抽象类的子类需要实现父类中的所有的抽象方法,否则该子类也需声明为抽象类;

  4. 抽象类可以实现接口

  5. 抽象类可以继承具体类

  6. 抽象类也可以有main()方法;

  7. 构造方法和static方法不能声明为抽象的;

  8. 抽象类中可以具有指向子类对象的对象引用。

  9. 可以有构造方法

示例代码:

package Test_9;//基类声明为抽象类abstract class  Base{    //抽象类中可以有其他方法    public void method()    {        System.out.println("Base");    }     //抽象方法没有方法体{}    abstract public void Test();//}//子类class Son extends Base{    //子类实现父类的抽象方法    @Override    public void Test() {        // TODO Auto-generated method stub    }}public class Test{    public static void main(String[] args) {        //Base base1 = new Base();编译出错,抽象类Base不能够被实例化        Base base = new Son();        base.method();    }}


2.接口(Interface)

定义:某个事物对外提供一些功能的生明。

  1. 接口也是实现了多态,同时接口也弥补了Java单继承的弱点;

  2. 使用接口声明方法和常量,接口中的方法只能是声明,没有具体的实现;

  3. 接口中的成员变量默认是:public static final;而且必须赋初值;

  4. 接口中的方法默认是:public static

  5. 不能有构造方法

package Test_9;interface MyInterface{    int i = 1;//必须赋初值    void add();}//demo类实现接口  MyInterface,如果有多个接口被实现用逗号隔开class Demo implements MyInterface{    //实现接口的方法    @Override    public void add() {        System.out.println(i);    }}public class Test{    public static void main(String[] args) {        Demo demo = new Demo();        demo.add();    }}
package test11;/** * 接口可以继承(或扩展)多个接口 * @author msi * */interface A{}interface B{}interface C{}//接口不可以实现接口interface D implements A{//编译出错}//,接口与接口之间的关系为继承,既可以单继承,也可以多继承。interface E extends A,B,C{}public class interfaceTest {}

3.最终类

  • 加上final修饰的类就是最终类;
  • 加上final的方法就是最终方法;
  • 最终类中可以有最终方法也可以没有(抽象类中可以有抽象方法也可以没有);
  • 最终类不能被继承;最终方法不能被重写。