java接口

java接口,第1张

java接口 接口 1. 接口的本质

普通类:只有具体实现
抽象类:具体实现和规范都有
接口:只有规范

  • 接口就是比"抽象类"还抽象的"抽象类",可以更加规范的对子类进行约束,全面地专业地实现了:规范和具体实现的分离.
  • 抽象类提供某些具体实现,接口不提供任何具体实现,接口中所有方法都是抽象方法.接口是完全面向规范的,规定了一批具有的公共方法规范.
  • 从接口的实现者角度看,接口定义了可以向外部提供的服务.
  • 接口是两个模块之间通信的标准,通信的规范.
2、接口和抽象类区别:
  1. 抽象类也是类,除了可以写抽象方法以及不能直接new对象之外,其他和普通类咩有区别.接口是另一种类型,和类有本质特征。
  2. 声明类用关键字class,声明接口用关键字是interface。
  3. 抽象类是用来被继承的,Java中的类的继承是单继承。类A继承了抽象类B,那么类A的对象就属于B类型了,可以使用多态,一个父类引用,可以指向这个父类的任意子类对象 注:继承的关键字是extends。
  4. 接口是用来被类实现的,Java中的接口可以被多实现,类A实现接口B、C、D、E…,那么A的对象就属于B、C、D、E等类型了,可以使用多态一个接口的引用,可以指向这个接口的任意实现类对象 注:实现的关键字是implements
3、接口中的方法都是抽象方法

接口中可以不写任何方法,但是如果写了,必须是抽象方法

public interface Action
	public abstract void run();
	//接口中方法默认都是抽象类,因此public abstract 可以默认不写。
	void test();
	public void go();
4、接口中的变量都是静态变量

用public static final修饰
接口中可以不写任何属性,但是如果写了,必须是静态变变量,使用public static final 修饰。

注:声明的同时必须赋值(因为接口中不能编写静态代码块)

public interface Action {
	public static final String NAME="Tom";
	//默认就是public static修饰
	int AGE=20;
}
main:
System.out.println(Action.NAME);
System.out.println(Action.AGE);

5. 一个类可以实现多个接口
public class Student impletments A,B,C,D{
//Student 需要实现接口A B C D 中所有抽象方法
//否则Student 类就要声明为抽象类,因为有抽象方法没有实现
}
main:
A s1=new Student ();
B s2=new Student();
C s3=new Student();
D s4=new Student();

注:s1只能调用接口A中声明的方法以及Object中的方法;s2只能调用接口B中声明的方法以及Object中的方法。。。

6、一个接口可以继承多个父接口
public interface A{
    public void testA();
}

public interface B{
    public void testB();
}

//接口C把接口A B中的方法都继承过来了
public interface C extends A,B{
    public void testC();
}

//Student相当于实现了A B C三个接口,需要实现所有的抽象方法
//Student的对象也就同时属于A类型 B类型 C类型
public class Student implements C{
    public viod testA(){}
    public viod testB(){}
    public viod testC(){}
}

main:

C o = new Student();
System.out.println(o instanceof A);//true
System.out.println(o instanceof B);//true
System.out.println(o instanceof C);//true
System.out.println(o instanceof Student);//true
System.out.println(o instanceof Object);//true
System.out.println(o instanceof Teacher);//false

//编译报错
System.out.println(o instanceof String);

如果o是一个接口类型声明的变量,那么只要X不是final修饰的类,该代码就能够通过编译,至于结果是不是true,就看变量o指的是不是对象的实际类型,是不是X的子类或者实现类了。

7. 接口作用

接口最主要的作用是达到统一访问,就是在创建对象的时候用接口创建。
【接口名】【对项名】=new【实现接口的类】
这样你想用那个类的对象就可以new那个对象了,不需要改原来的代码。

——学习内容来自https://oddfar.github.io/notes/java/se/object/#%E5%86%85%E9%83%A8%E7%B1%BB

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5120825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存