java笔记(6) 抽象类和接口
  LGfaEdtCq425 2023年11月01日 56 0

abstract

由abstract关键字修饰的类称为抽象类,可以将某些类共有的行为抽象出来,形成约束,提高开发效率。

//抽象类
public abstract class Action{
  //抽象方法,只有方法名字,没有方法的实现
  public  abstract void doSth();
}
  1. 抽象类不可以通过new关键字创建实例
  2. 抽象类中可以有普通方法
  3. 抽象方法必须在抽象类中
  4. 抽象类可以有构造方法,但只在子类创建实例时调用

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);
  }
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2Vtxr3XfwhHq   2024年05月17日   53   0   0 Java
  Tnh5bgG19sRf   2024年05月20日   109   0   0 Java
  8s1LUHPryisj   2024年05月17日   46   0   0 Java
  aRSRdgycpgWt   2024年05月17日   47   0   0 Java
LGfaEdtCq425