类、抽象类、接口
类要说实例化;接口不能说实例化,要说实现了一个接口
抽象类
在 Java 中,含有抽象方法的的类称为抽象类,不能生成对象
抽象方法
抽象方法是指没有方法体({}
)的方法,同时抽象方法还必须使用关键字 abstract
public abstract void fun();
Java 接口
Interface 在Java 中是一个抽象类型,是抽象方法的集合。一个类通过继承接口的方式,从而来继承接口的抽象方法。
-
接口并不是类。类描述对象的属性和方法。接口则包含类要实现的方法。
-
一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
-
接口无法被实例化,但是可以被实现。接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
接口代码格式
[可见度] interface 接口名称 [extends 其他的接口名] {
// 声明变量
// 抽象方法
}
public interface HelloService extends Remote {
public String echo(String msg) throws RemoteException;
public Date getTime() throws RemoteException;
}
接口和类的区别
-
接口没有构造方法
-
接口中成员变量只能是 public static final 类型
static String a = null; final String a1 = null; public String aa1 = null;
-
接口不能被类继承 (接口与接口之间可以用
extends
继承),是要被类实现。一个类只可以继承一个抽象类,但可以实现多个接口 -
接口支持多继承
public interface Hockey extends Sports, Event
-
接口不能实例化
-
接口中所有方法都是抽象方法,但是可以有
default
修饰,并可以有函数体public interface HelloService extends Remote{ //抽象方法 public String echo(String msg) throws RemoteException; public Date getTime() throws RemoteException; //默认方法 public default void show(int a) throws RemoteException { System.out.println(a); } }
接口的实现(代码)
如果 HelloService 是一个接口,在实现的时候不能写成第一种形式
HelloService hhh = new HelloService()
要写成这种形式
HelloService hhh = new HelloService() {
@Override
public String echo(String msg) throws RemoteException {
return null;
}
@Override
public Date getTime() throws RemoteException {
return null;
}
};
或者先通过类实现 HelloService 接口,然后再实例化一个对象
HelloService ser2 = new HelloServiceImpl("ser2");
或者实现接口的方式,最后输出此接口的实例名称:
HelloService service1 = (HelloService) registry.lookup("HelloService1");
System.out.println(service1.getClass().getName());
参考文章
https://www.runoob.com/java/java-interfaces.html