java笔记(6) 抽象类和接口

打印 上一主题 下一主题

主题 917|帖子 917|积分 2751

abstract

由abstract关键字修饰的类称为抽象类,可以将某些类共有的行为抽象出来,形成约束,提高开发效率。
  1. //抽象类
  2. public abstract class Action{
  3.   //抽象方法,只有方法名字,没有方法的实现
  4.   public  abstract void doSth();
  5. }
复制代码

  • 抽象类不可以通过new关键字创建实例
  • 抽象类中可以有普通方法
  • 抽象方法必须在抽象类中
  • 抽象类可以有构造方法,但只在子类创建实例时调用
interface

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

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

小小小幸运

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表