Java学习9 2020-02-14

内容

1.抽象类
2.接口

一.抽象类

1.语法

class关键字前面加abstract,在修饰词之后

2.注意点:

①抽象类无法被实例化
②抽象类也有构造方法,该构造方法是给子类创建对象用的(原因可以看上篇博客)
(从这个也能看出来,构造方法调用不一定创建对象)

3.抽象类中可定义抽象方法:

①语法
在方法的修饰符列表中添加abstract关键字。
②注意点:
抽象方法应该以 ; 结束,不能带有{}(抽象方法不能有主体
比如

public abstract void m();

2.注意点(续)

③抽象类中不一定会有抽象方法,但是抽象方法必须要出现在抽象类中
④一个非抽象的类继承抽象类,必须将抽象类中的抽象方法覆盖/实现/重写
做法是可以将方法复制粘贴到子类中然后把abstract去掉

二.接口

接口也是一种引用类型,可以等同看作类

1.语法:

【修饰符】 interface 接口名{}

2.注意点:

①接口中只能出现常量(都是public static final修饰,可以省略不写)、抽象方法(都是public abstract修饰,也可以省略不写)

public interface A{
public static final string SUCCESS = "success";
}

②接口其实是一个特殊的抽象类,特殊在接口是完全抽象的,而抽象类是半抽象。
③接口中无构造方法无法被实例化
④接口和接口之间可以多继承

比如

interface E extends B,C,D{
}

一个类可以实现多个接口,这里的实现可以等同看作继承
注意:必须用implements修饰,implements是实现的意思,是一个关键字,和extends意义相同,当然别忘了下面那一条,需要实现/重写/覆盖

比如

class MyClass implements B,C{
}

⑥一个非抽象的类实现接口,需要将接口中的所有方法实现/重写/覆盖

3.作用:

①使项目分层,所有层都面向接口开发,开发效率提高了(比如分成主方法和接口的实现类两层,可以使用多态,面向接口调用)

比如

jieKou a = new jieKouimplementsClass;
a.m();

这个时候虽然写的是调用接口类的抽象函数(编译阶段),但是实际上调用的是实现类的同名函数(运行阶段)。这个知识点在多态部分讲过。
就类似于灯泡和灯口,中间有一个接口,灯泡坏了就换个灯泡,只要是面向接口的,适合这个接口,就完全没问题。
②接口使代码和代码之间耦合度降低。
就像内存条和主板的关系,变得“可插拔”,可以随意切换。

4.选择

如果抽象类和接口都能满足要求,那优先选择接口。
因为接口可以多实现,多继承。
并且一个类除了实现接口之外,还可以去继承其他类(保留了类的继承

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 4,768评论 0 4
  • 1.import static是Java 5增加的功能,就是将Import类中的静态方法,可以作为本类的静态方法来...
    XLsn0w阅读 5,013评论 0 2
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 5,513评论 4 12
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 4,937评论 0 5
  • 课程总概 该门课程作为java入门学习的第二季,是在有一定的java基础上进行的进一步学习。由于该季涉及到了jav...
    没有故事的土鳖阅读 3,831评论 1 4