abstract class和interface的区别

来源:互联网 发布:柜子设计软件手机 编辑:程序博客网 时间:2024/05/20 13:38
一,abstract关键字
abstract可以修饰类或方法
public abstract class demo {        public abstract void MyMethod();    }

要点:
1,含有abstract方法的类一定是抽象类(abstract修饰),但抽象类并不一定有abstract方法;
2,如果 abstract 类的子类没有实现其超类的所有 abstract 方法,该子类也是 abstract 类;
3,abstract class类中定义抽象方法必须在具体(Concrete)子类中实现;
4,不能有抽象构造方法或抽象静态方法。

public abstract class demo {public abstract void myMethod1();public abstract void myMethod2();public void myMethod3(){System.out.println("可以不是抽象方法");};//abstract demo(){}//static abstract void myMethod();}//这里的abstract去掉会报错abstract class son1 extends demo{public void myMethod1(){System.out.println("实现方法MyMethod1()");}}//abstract class类中定义抽象方法全部实现class son2 extends demo{public void myMethod1(){System.out.println("实现方法MyMethod1()");}public void myMethod2(){System.out.println("实现方法MyMethod2()");}}

所以,
  • abstract 关键字不能应用于 staticprivatefinal 方法,因为这些方法不能被重写,因此,不能在子类中实现。

  • final 类的方法都不能是 abstract,因为 final 类不能有子类。




二,接口
接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。
1,接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final;
2,抽象类中只包含常量和方法的定义,而没有变量和方法的实现


interface interfaceDemo {//默认public static final 类型int id=0;public static final String name="";//默认public abstract类型void method1();public abstract void method2();}class son implements interfaceDemo{public void method1() {}public void method2() {}}



0 0
原创粉丝点击