java基础之抽象类和接口

我会带着你远行 2022-07-14 14:39 307阅读 0赞

java基础之抽象类和接口

1、抽象类

  1. * 1abstract 修饰类:抽象类
  2. * 1) 不可被实例化
  3. * 2)抽象类有构造器
  4. * 3)抽象方法所在的类一定是抽象类,但是抽象类可以没有抽象方法
  5. *
  6. * 2abstract 修饰方法:抽象方法
  7. * 1)格式:没有方法体,包括{}
  8. * 2)抽象方法只保留方法的功能,而具体的执行交给继承抽象类的子类,由子类重写此抽象方法。
  9. * 3)若子类继承抽象类,并重写了所有的方法,则此类是一个可以实例化的类;若子类继承抽象类,没有重写所有的抽象方法,则此类必须声明为抽象的。
  10. /**
  11. * abstract 不能用来修饰属性、构造器、private、final、static
  12. * //因为构造器不能被重写,所以构造器不能重写
  13. * //因为方法被声明成abstract,此方法必须要被子类重写,而private 修饰的方法,子类无法重写。
  14. * //当方法被static和abstract共用时,当类在调用这个方法时,方法没有body内容,无法执行。
  15. */

2、接口

  1. /**
  2. * 接口(interface) :是与类并行的一个概念
  3. * 1、接口可以看成一个特殊的抽象类。是常量与抽象方法的集合。不能包含变量以及一般的方法.
  4. * 常量:默认都是public static final来修饰的,抽象方法:默认都是public abstract来修饰。
  5. * 2、接口是没有构造器的。
  6. * 3、接口定义的就是一种功能,这个功能可以被类所实现。
  7. * 4、实现接口类,必须要重写其中所有的抽象方法,方可实例化。若没有重写所有的抽象方法,则此类仍为一个抽象类。
  8. * 5、类可以实现多个接口,-----java中继承是单继承的。
  9. * 6、接口与接口之间也是继承关系,类与接口之间关系是实现,类跟类之间是继承。
  10. * 7、接口之间的继承可以使多重继承。(这点与类不同)
  11. */

(1)接口多态性

  1. public class TestInterface {
  2. //接口多态性
  3. public static void main(String[] args) {
  4. Duck duck = new Duck();
  5. test1(duck);
  6. test2(duck);
  7. test3(duck);
  8. }
  9. public static void test1(Runner r){//Runner r = new Duck();
  10. r.run();
  11. }
  12. public static void test2(Swimmer s){//Swimmer s= new Duck();
  13. s.swim();
  14. }
  15. public static void test3(Flier f){//Flier f= new Duck();
  16. f.fly();
  17. }
  18. }
  19. interface Runner{
  20. public abstract void run();
  21. }
  22. interface Swimmer{
  23. void swim();
  24. }
  25. interface Flier{
  26. void fly();
  27. }
  28. class Duck implements Runner,Swimmer,Flier{
  29. @Override
  30. public void fly() {
  31. System.out.println("起飞");
  32. }
  33. @Override
  34. public void swim() {
  35. System.out.println("游泳");
  36. }
  37. @Override
  38. public void run() {
  39. System.out.println("跑步");
  40. }
  41. }

(2)接口代理:(静态代理)

  1. public class TestProxy {
  2. public static void main(String[] args) {
  3. Object object = new ProxyObject();
  4. object.action();
  5. }
  6. }
  7. interface Object{
  8. void action();
  9. }
  10. class ProxyObject implements Object{
  11. Object obj;
  12. public ProxyObject(){
  13. System.out.println("代理类创建成功");
  14. obj = new ObjectImpl();
  15. }
  16. @Override
  17. public void action() {
  18. System.out.println("代理类开始执行");
  19. obj.action();
  20. System.out.println("代理类结束执行");
  21. }
  22. }
  23. class ObjectImpl implements Object{
  24. @Override
  25. public void action() {
  26. System.out.println("被代理类开始执行");
  27. System.out.println("具体操作");
  28. System.out.println("被代理类结束执行");
  29. }
  30. }

发表评论

表情:
评论列表 (有 0 条评论,307人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java基础——抽象接口

    一、抽象类(强制子类覆写方法) 抽象类是普通类的“超集”,只是比普通类多了一些抽象方法而已(抽象方法个数:0-N) 抽象方法所在的类必须是抽象类,子类若是继承了抽象类,必须