抽象类与接口

抽象类与接口

抽象类,抽象方法

使用abstract来定义抽象类,抽象类就是约束的作用,也不能产生对象实例,抽象类除了被继承之外,本身没有任何意义。一个抽象类可以不包含方法,也可以存在抽象方法和普通的方法。但抽象方法只能存在于抽象类中,抽象方法就是使用abstract创建的方法,这个方法没有方法体,以分号结尾,本身没有任何意义,只能被继承的子类重写。而继承这个抽象类的子类必须重写这个抽象类中的抽象方法。除非这个子类也是一个抽象类,那就交又他的子子类完成重写。

抽象类:

package oop.Demo06;

public abstract class Action {//使用abstract定义抽象方法
   public abstract void a();//抽象方法,没有方法体
}

子类:

package oop.Demo06;

public class A extends Action{//继承抽象类Action,必须重写父类的抽象类
   @Override
   public void a() {//重写父类的抽象方法
  }
}

接口

接口更像是一个升级版的"抽象类",接口中所有方法都只能是抽象方法,属性为常量(一般不会出现属性)。一个类可以同时实现多个接口,所以侧面实现了多继承的概念。和抽象类相同的是,接口也不能产生对象实例,不能被实例化,因为接口不是类,所以没有构造方法。

使用interface关键字来替换类中的class关键字,就能把这个类换成一个接口。在接口中,只能定义抽象方法,方法默认是public abstract的。 而一个类,可以同时实现多个接口,实现伪多继承。在类名后面使用implements关键字连接 接口名,需要多个接口时,用逗号隔开接口名即可。但类必须重写每个接口内的所有方法,这就让接口起到了一个约束的作用。

 

接口的定义和多继承形式:

接口1

package oop.Demo07;

public interface UserService {//定义一个接口1
   //接口中所有方法都是抽象的
   
   void add(String name);//增
   void delete(String name);//删
   void update(String name);//改
   void query(String name);//查
}

接口2

package oop.Demo07;

public interface TimeService {//定义一个接口2
   void time();
}

创建一个类实现多个接口

package oop.Demo07;
//类通过implements实现接口,实现接口必须重写接口内的所有抽象类
//一个类可以同时实现两个接口,实现了多继承
public class UserServiceImpl implements UserService,TimeService{
   @Override
   public void add(String name) {//重写UserService的抽象方法

  }
   @Override
   public void delete(String name) {//重写UserService的抽象方法

  }
   @Override
   public void update(String name) {//重写UserService的抽象方法

  }

   @Override
   public void query(String name) {//重写UserService的抽象方法

  }


   @Override
   public void time() {//重写TimeService的抽象方法

  }
}

 

posted on 2020-11-20 21:41  晋歪歪  阅读(81)  评论(0编辑  收藏  举报