一、抽象类 1.抽象类不能被实例化,实例化要交给子类完成,它只需要一个子类就可以完成 2.抽象方法必须由子类来进行重写 3.如果一个类包含一个抽象方法,则该类必须定义成抽象类 4.抽象类中可以包含具体方法,也可以不包含 5.子类中的抽象方法不能与父类重名 6.abstract 不能与 final 同时修饰一个类 7.abstract 不能与 private、static、final 或者 native 并列修饰同一个方法 二、接口 接口是一种比抽象类更加抽象的“类”,接口本身并不是类。它不能直接 new ,如 new Runnable() ,只能 new 出它的实 现类。 Java是单继承的。一个类只能有一个父类,单可以实现多个接口。 注意点: 1.接口的所有方法自动的被声明为 public,并且只能声明为 public。 2.接口中的变量自动的声明为 public static final,可以直接通过类名直接访问。 3.接口中不能有实现的方法。 4.非抽象类实现接口必须实现接口所有的方法,抽象类可以不实现。 5.不能用 new 操作符修饰接口。可以声明一个变量,但变量必须指向一个实现了该接口的类的对象。可以用 instanceof 检测某个类是否实现了某个接口。例如:if( object instanceof Comparable ){ …… } 6.实现多个接口的时候要避免接口命名的重复。 三、抽象类与接口的区别 1.语法上 抽象类可以有自己任意范围的成员数据,可以拥有抽象或者非抽象方法。接口只能有自己 public static final修饰的成 员数据,只能有方法的声明。在某种程度上接口是抽象类的一种特殊化形式。 2.MORE a.抽象的层次。抽象类是对类进行抽象(包括属性、行为),接口是对行为的抽象。 b.抽象类体现出的是一种继承的关系,本质上来说抽象类与其子类所描述的是同一概念,子类是对抽象类更加详细的描述。 而接口则没有这一要求,接口只是所有相同行为的抽象,体现的是行为的契约。 c.一般来说,抽象类是由子类泛化抽象出的,而接口则不是。
时间: 2024-12-13 03:05:01