文章目录

  • 声明定义抽象类
  • 声明定义接口
  • 派生类、抽象类、接口的继承要点

声明定义抽象类

public abstract class CRMSystem {public abstract Client add(Client newGuy); //添加用户方法public abstract Event add(Event e, Client guy); //重载添加事件、用户方法public abstract Event[] todayEvents(); //今日事件方法
}

说明:
1.抽象类有构造器
2.接口和抽象类不能实例化
3.抽象方法所在的类必须是抽象类(接口是纯抽象类)
4.变量不存在抽象的概念
5.抽象类可以只有抽象方法,没具体方法
6.抽象类可以只有具体方法,没有抽象方法,这样设计的目的就是不让调用者创建该类的实例对象
7.抽象类的类体内容可以为空
8.声明定义类的时候,类变量或者成员变量可以不要初始化(可以不赋初始值),创建对象的时候会自动初始化
9.方法内声明的变量则必须初始化,否则会报编译错误
10.抽象类中的抽象方法的访问权限修饰符可以是 publicprotecteddefault,但是不可以是 private。若没有指明访问权限修饰符,默认是default

声明定义接口

public interface CRMSystem {Client add(Client newGuy);Event add(Event e, Client guy);Event[] todayEvents();// 默认方法,用来升级接口public default void myMethodDefault() {...}
}

说明:
1.接口中的变量,默认 public static final,其实就是常量,而且必须赋值
2.接中的方法一定是 public abstract 的(默认,可以不写)
3.如果是 Java 8,还可以额外包含默认方法和静态方法

public default 返回值类型 方法名(参数列表) {方法体} // 默认方法,必须是public,默认是public
public static 返回值类型 方法名(参数列表) {方法体} // 静态方法,不可以是protected,默认是public

4.如果是 Java 9,还可以包含私用方法

private 返回值类型 方法名(参数列表) {方法体} // 私有的普通方法
private static 返回值类型 方法名(参数列表) {方法体} // 私有的静态方法

5.不能通过实现类对象调用接口的静态方法,特别注意了
6.接口不可以有静态代码块和构造器
7.接口体的内容可以为空

派生类、抽象类、接口的继承要点

1.一个类(不论是具体类还是抽象类)只能继承自一个类(不论是具体类还是抽象类),不可以同时继承自多个类,换句话说一个类的直接父类只能有一个,这叫单继承
2.一个类可以多级继承,例如,A 继承自 B,B 继承自 C
3.一个类可以同时实现多个接口
4.一个父类可以有多个子类,即不同的类可以继承自同一个父类
5.接口可以继承自(extends)另外一个接口,也可以同时继承自多个接口
6.具体的子类如果继承自(extends)一个抽象类,则必须实现抽象类中的全部抽象方法
7.具体的实现子类如果实现自(implements)一个接口,则必须实现接口中的全部抽象方法
8.如果声明的是抽象类,继承自(extends)一个抽象类,则可以实现部分的抽象方法,甚至都不实现也行

9.如果声明的是抽象类,实现自(implements)一个接口,则可以实现部分的抽象方法,也可以都不实现,整个类体空的也可以;也可以实现全部的抽象方法,抽象类中可以没有抽象方法。

10.实现(implements)也是一种特殊的继承关系
11.父类,又叫基类、超类;子类,又叫派生类
12.实现抽象方法,也可以理解为重写(Override)方法
13.子类的成员方法无法直接访问父类的私域(private field)
14.一个具体的实现子类同时实现多个接口时,如果不同接口含有相同方法签名的默认方法,具体类必须重写冲突的默认方法
15.一个具体的实现子类同时实现多个接口时,如果不同接口含有相同方法签名的抽象方法,具体的实现子类只要实现其中一个抽象方法即可
16.一个具体的实现子类的直接父类和接口含有相同方法签名的方法时,通过具体的实现子类对象调此方法,优先使用直接父类的方法
17.子类无法继承父类的构造器
18.子类无法继承父类的私有变量和私有方法(实际已经继承了,只是不可见而已)
19.子类不能继承父类的静态变量和静态方法
20.子类只能继承父类的成员变量和成员方法
21.一个具体类继承自一个抽象类,必须实现抽象类中的全部抽象方法;这个具体类可以叫作抽象类的子类、派生类、实现类;而抽象类可以叫作该具体类的父类、基类、超类。
存疑:A 继承自 B,那么 B 能否叫作 A 的基类、超类呢?

Java声明定义抽象类_接口_继承_实现相关推荐

  1. java类、抽象类、接口的继承规则

    一个接口可以继承多个接口. interface C extends A, B {}是可以的.一个类可以实现多个接口: class D implements A,B,C{}但是一个类只能继承一个类,不能 ...

  2. Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积。 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法。

    Java中定义抽象类Shape,其中包含抽象方法double getPeremeter( )求周长和double getArea( )求面积. 定义一个矩形类,继承此抽象类,并自行扩充成员变量和方法, ...

  3. java笔记之抽象类和接口

    前言 java笔记之抽象类和接口是开发人员的设计工具 正文 1.抽象类 客观存在的一类事物,当这类事物都是抽象的,无法具体的描述. 1)语法: 修饰符 abstract class 类名{ } 2)特 ...

  4. Java提高篇 —— 抽象类与接口

    一.前言 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间 ...

  5. Java 中的抽象类和接口

    Java 中的抽象类和接口 1.参考资料 深入理解Java的接口和抽象类 Java抽象类与接口的区别 2.前言 有一次旁听面试的时候,听到面试官问了一句:既然 JDK8 中接口有了默认方法实现,那接口 ...

  6. Java中类、抽象类、接口之间的区别和联系。

    Java中类.抽象类.接口之间的区别和联系. 程序设计所面对的问题域--客观世界,是由许多事物构成的,这些事物既可以是有形的(比如一辆汽车),也可以是无形的(比如一次会议).把客观世界中的事物映射到面 ...

  7. Java自学笔记——Java面向对象——04.抽象类、接口、内部类

    Java 面向对象各节 Java自学笔记--Java面向对象--01.回顾方法 Java自学笔记--Java面向对象--02.构造器.类和对象 Java自学笔记--Java面向对象--03.封装.继承 ...

  8. JAVA中的抽象类与接口

    JAVA中的抽象类与接口 接口和抽象类的区别: 接口和抽象类是支持抽象类定义的两种机制. 接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现. 抽象类 ...

  9. Java面向对象编程——抽象类和接口

    Java面向对象编程--抽象类和接口 定义类的过程就是抽象和封装的过程,而抽象类与接口则是对实体类进行更高层次的抽象,进定义公共行为和特征. 抽象类: 如果一个类没有足够的信息去描述一个具体的对象,那 ...

最新文章

  1. 开放下载!《阿里巴巴大数据及AI实战》深度解析典型场景大数据实践
  2. 如何在优雅地Spring 中实现消息的发送和消费
  3. [java语言]——InetAddress类的getByName()方法
  4. 缓冲区溢出_了解Java缓冲池
  5. 白话Elasticsearch60-数据建模实战_Join datatype 父子关系数据建模
  6. laravel+php+支付功能,laravel+微信支付源码
  7. 安装Conda并在Conda下安装jupyter notebook
  8. 【机器学习】决策树知识点小结
  9. SAP Commerce Cloud 的 build 过程
  10. 长江存储发布PCle4.0 固态硬盘致态TiPro7000,顺序读取7400MB/s
  11. python 协程 php,python3.x,协程_python协程练习部分代码的理解?,python3.x,协程,asyncio - phpStudy...
  12. unix mysql备份_数据库操作 备份篇 unix
  13. 【前端模板之路】二、人肉非智举,让代码帮我们写代码才是王道
  14. Ueditor、FCKeditor、Kindeditor编辑器漏洞
  15. HR人事管理系统源码
  16. 税务系统什么时候使用计算机,2020年税务师考试题量、答题要求及计算器使用规定...
  17. U8修改销售订单模板
  18. 74LV165与74HC595 使用
  19. centos 启动流程及grub、initramfs修复
  20. [python] 网络编程游戏

热门文章

  1. 游戏ai 行为树_游戏AI –行为树简介
  2. intellij注释模板_IntelliJ中的实时模板
  3. javase获取项目根目录_JavaSE:如何设置/获取您自己的文件和目录属性
  4. rest api 可选参数_可选类型API
  5. java常见_关于Java的常见误解
  6. mapreduce 算法_MapReduce算法–了解数据联接第二部分
  7. Derby数据库备份
  8. java运行时间间隔_Java:安排作业按时间间隔运行
  9. spring常见面试问题_Spring面试问题
  10. 创新设计模式:抽象工厂模式