[Java] 抽象类和接口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java] 抽象类和接口相关的知识,希望对你有一定的参考价值。
目录
- 抽象类
- 接口
1抽象类
定义
如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来实例化的类,我们称它为抽象类。
抽象类的特点
- 抽象类不能被实例化,但可以引用子类对象。
- 子类必须实现抽象类的抽象方法。如果子类也是抽象类,可以不实现抽象类的方法。
- 抽象类中可以包含具体的方法,也可以包含抽象的方法。
- 子类中的抽象方法不能与父类的抽象方法同名。
- abstract 不能与final 并列修饰同一个类。
- abstract 不能与private、static、final、或native并列修饰一个方法。
示例
public abstract class Test{ // 属性 public int var = 0; //抽象方法 public abstract void hello(); //具体方法 public void hello2{ System.out.println("Hello2"); } }
2 接口
定义
- 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
- 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
- 接口无法被实例化,但是可以被实现。抽象类可以继承接口但不实现接口中的类。
- 接口类型可以用来声明一个变量。作为一个引用。
- 接口描述的是一个具体的对象的局部。
接口特性
- 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式地被指定为public abstract(只能是public abstract,其他修饰符都会报错)。
- 接口中可以含有变量,但是接口中的变量会被隐式地被指定为public static final 变量(并且只能是public,用private修饰会便会报错)
- 接口中的方法不能在接口中实现,只能由实现该接口的类来实现接口中的方法。
示例
public interface Test{ // 属性 public static final int var = 1; // 方法 public void hello(); // 隐式定义为public abstract }
抽象类和接口的区别
- 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
- 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final 类型的。
- 接口中不能包含静态代码块以及静态方法,而抽象类是可以有静态代码块和静态方法的。
- 一个类只能继承一个抽象类,而一个类可以实现多个接口。
参考:
http://www.runoob.com/java/java-interfaces.html
以上是关于[Java] 抽象类和接口的主要内容,如果未能解决你的问题,请参考以下文章