【Java】接口
·
目录
4.5接口中的变量默认被final public static修饰
4.7接口虽然不是类,但接口编译后的字节码文件也是.class
4.8如果类没有实现接口中所有的抽象方法,则必须设置成抽象类
1.接口的概念
现实中的接口:
电脑上的USB上,可以插:键盘、鼠标……
电源上的插孔上,可以插:手机,电脑……
Java中的接口,你可以把它当作一个特殊的类,不同的是接口的成员没有执行体,是由全局常量和公共的抽象方法所组成。
2.接口的格式
把定义类中的class换成interface就可以了。
public interface 接口名称{
//抽象方法,以下四种都可以
public abstract void method1();
public void method2();
abstract void method3();
void method4();
}
细节:
- 接口名称一般用形容词;
- 接口名称一般在前面加一个 ' I ';
- 接口中的方法和属性前面最好啥都不写,保持代码的简洁性;
3.接口的使用
- 接口不能直接使用,必须要有一个“实现类”实现该接口,实现该接口中的所有方法;
- 接口与类之间通过implements来实现;
public class 类名称 implements 接口名称{
//……
}
4.接口的特性
4.1接口是一种引用类型,但是不能通过直接new接口的对象
public interface USB{
void method();
}
public class Test4 {
public static void main(String[] args) {
USB usb = new USB();//编译错误
}
}
4.2接口中的方法只能public修饰
public interface USB{
//private void method();//此处不可以使用private
void method(); //默认 public abstract
}
4.3接口中的方法不能在接口实现
public interface USB{
void method();
//下面错误代码
void method1(){
System.out.println("编译错误");
}
}
4.4重写接口方法时,不能使用默认的访问权限
interface USB{
void method1();//默认public
void method2();//默认public
}
class Mouse implements USB{
@Override
void method1() {//编译报错,不能使用默认修饰符
System.out.println("打开鼠标");
}
@Override
public void method2() {
System.out.println("打开鼠标");
}
}
4.5接口中的变量默认被final public static修饰
interface USB{
int a = 0;
}
public class Test4 {
public static void main(String[] args) {
System.out.println(USB.a);//可以通过接口名访问,说明是静态的
//USB.a = 1; 编译错误,说明是不可修改的变量
}
}
4.6接口中不可以有静态代码块,构造方法
4.7接口虽然不是类,但接口编译后的字节码文件也是.class
4.8如果类没有实现接口中所有的抽象方法,则必须设置成抽象类
5.实现多个接口
Java中,一个子类只能继承一个父类,但是一个类可以实现多个接口。
举例:
//会跑的
interface IRunning{
void run();
}
//会飞的
interface IFlying{
void fly();
}
//会游的
interface ISwimming{
void swim();
}
//狗类,会跑,会游
class Dog implements IRunning,ISwimming{
public Dog() {
}
@Override
public void run() {
}
@Override
public void swim() {
}
}
6.接口之间的继承
在Java中,类与类之间是单继承,一个类可以继承多个接口,接口与接口可以实现多继承。利用接口可以实现多继承的目的。
相当于把多个接口拼在一起。
interface IRunning {
void run();
}
interface ISwimming {
void swim();
}
// 两栖的动物, 既能跑, 也能游
interface IAmphibious extends IRunning, ISwimming {
}
class Frog implements IAmphibious {
...
}
更多推荐
已为社区贡献2条内容
所有评论(0)