普通类:只有具体实现
抽象类:具体实现和规范都有
接口:只有规范
- 接口就是比"抽象类"还抽象的"抽象类",可以更加规范的对子类进行约束,全面地专业地实现了:规范和具体实现的分离.
- 抽象类提供某些具体实现,接口不提供任何具体实现,接口中所有方法都是抽象方法.接口是完全面向规范的,规定了一批具有的公共方法规范.
- 从接口的实现者角度看,接口定义了可以向外部提供的服务.
- 接口是两个模块之间通信的标准,通信的规范.
- 抽象类也是类,除了可以写抽象方法以及不能直接new对象之外,其他和普通类咩有区别.接口是另一种类型,和类有本质特征。
- 声明类用关键字class,声明接口用关键字是interface。
- 抽象类是用来被继承的,Java中的类的继承是单继承。类A继承了抽象类B,那么类A的对象就属于B类型了,可以使用多态,一个父类引用,可以指向这个父类的任意子类对象 注:继承的关键字是extends。
- 接口是用来被类实现的,Java中的接口可以被多实现,类A实现接口B、C、D、E…,那么A的对象就属于B、C、D、E等类型了,可以使用多态一个接口的引用,可以指向这个接口的任意实现类对象 注:实现的关键字是implements
接口中可以不写任何方法,但是如果写了,必须是抽象方法
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)