抽象类
- 用abstract修饰
- 不能被实例化,即不能用new关键字来实例化对象
- 含有0个或多个抽象方法(抽象类可以没有抽象方法,但是有抽象方法一定是抽象类)
- 抽象方法只有方法体,没有实现。
- 如果子类实现了父类的所有抽象方法,那么它可以不是抽象类,否则一定是抽象类
- 可以有具体的方法
-
package com.xx.abstracts; public abstract class Fu { public abstract void run(); public abstract void eat(int jin); public void see(){ System.out.println("============="); } } /** * 如果子类实现了父类的所有抽象方法,那么它可以不是抽象类,否则一定是抽象类 */ abstract class Zi extends Fu { public void run(){ System.out.println("run"); } // public void eat(int jin){ // System.out.println("eat" + jin); // } }接口
- 用interface修饰
- 不能被实例化
- 一个类只能继承一个类,但是可以实现多个接口
- 接口中的方法均为抽象方法,没有实现。
- java8开始接口可以有默认实现
- 不能有实例域和静态方法
-
package com.xx.interfaces; public interface Person { /** * java8开始接口可以有默认实现 */ public default void run(){ } public default void eat(){ } public void say(); } interface Farming{ } /** * 一个类只能继承一个类,但是可以实现多个接口 */ class man implements Person,Farming{ public void say(){ } }区别?
- 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。
- 接口中除了 static、final 变量,不能有其他变量,而抽象类中则不一定。
- 一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过 extends 关键字扩展多个接口。
- 接口方法默认修饰符是 public,抽象方法可以有 public、protected 和 default 这些修饰符(抽象方法就是为了被重写所以不能使用 private 关键字修饰!)。
本文介绍了Java中抽象类和接口的相关知识。抽象类用abstract修饰,不能实例化,可含抽象或具体方法;接口用interface修饰,也不能实例化,方法多为抽象。还阐述了二者区别,如接口方法默认public,抽象类可有非抽象方法等。
680

被折叠的 条评论
为什么被折叠?



