java接口和抽象类疑问

一、接口

Java接口(interface)技术,主要用来描述类具有什么功能,而并不是给出每个功能的具体实现。一个类可以实现一个或多个接口,并在需要接口的地方,随时使用相应接口的对象。

二、有抽象类了为什么还要引入接口概念

大家学到接口可能会产生这样一个疑问:既然有了抽象类,为什么Java程序设计语言还要不辞辛苦的引入接口这个概念呢?

非常遗憾,使用抽象类表示通用属性会存在这样一个问题:因为Java是单继承每个类只能扩展于一个类。假设一个类已经继承了一个类了,那么它就不能再继续扩展啦?哈哈,所以要引入接口概念!因为一个类可以实现一个或多个接口,并在需要接口的地方,随时使用相应接口的对象

三、抽象类和接口

抽象类的定义方法

public abstract class Comparable{

    public abstract int compareTo(Object other);

}

接口的定义方法

public interface Comparable{

    int compareTo(Object other);  //会被自动设置为public,无需声明,Java语言规范也建议不要声明

}

注意

1.抽象类和接口都不能被实例化

2.抽象类就是类,除了不能实例化和普通的Java类没区别。他可以声明一个或多个抽象方法,让继承他的类去实现,而且必须实现。

3.接口中不能有实例域,但是接口可以有public static final 常量,和接口中的方法被自动设置public一样,接口中的域将被自动设置为public static final ,声明方法

double SPEED_LIMIT = 95;   //将会被自动设置为 public static final

4.在Java SE 8中,允许在接口中添加静态方法,并在接口中实现它。

public interface BeHappy {
	
	static void  sayHappy(){
		System.out.println("开心");
	}
	 
}

5.在Java SE 8中,允许在接口中添加默认方法,并在接口中实现它。

public interface BeHappy {
	
	 default void  sayHappy(){
		System.out.println("开心");
	}
	 
}

不过会产生默认方法冲突的问题,感兴趣的,或者需要用到的同学,可以自行百度啊。

猜你喜欢

转载自blog.csdn.net/qq_38006520/article/details/81748566