abstract
由abstract关键字修饰的类称为抽象类,可以将某些类共有的行为抽象出来,形成约束,提高开发效率。- //抽象类
- public abstract class Action{
- //抽象方法,只有方法名字,没有方法的实现
- public abstract void doSth();
- }
复制代码
- 抽象类不可以通过new关键字创建实例
- 抽象类中可以有普通方法
- 抽象方法必须在抽象类中
- 抽象类可以有构造方法,但只在子类创建实例时调用
interface
使用interface 创建 的类称为接口。
在普通类中只有具体实现;抽象类中,具体实现和规范(抽象方法)都有;而在接口中只有规范,没有具体实现,将约束和实现分离。
接口中定义的属性默认都被final修饰的静态属性,且访问限制为public
接口中定义的方法默认是抽象的,且访问限制为public- interface UserService{
- //public 和 final static是多余的
- public final static int num = 1001;
- //public 和 abstract是多余的,在interface中,不需要额外声明访问限制和抽象类,默认都是public和abtract
- public abstract void run(String name);
-
- interface TimerService{
- void add(int t);
- //这不是普通的方法,这实际上是为该方法定义了默认行为,该方法可以被正常重写,访问限制也默认是public。
- //实现该接口的类可以选择不重写该方法,可以直接调用
- default void saySth(Stirng words){
- System.out.println("Saying "+words);
- }
- }
复制代码 接口需要有实现类,一个类想要实现一个接口,需要通过implement关键字。一旦实现了某个接口,就必须实现接口中的方法。一个类可以同时实现多个接口。- class UserServiceImpl implements UserService,TimerSerice{
- //UserServiceImpl类实现了两个接口,就必须同时实现这两个接口中的方法
- public void run(String name){
- System.out.println(name);
- }
- public void run(int t){
- //该方法没有被实现,但可以直接调用
- saySth("Hello");
- System.out.println(t);
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |