在之前的学习中,父类其实就是子类的抽象了,比如老虎和兔子都可以被抽象成动物。抽象类是更进一步的抽象,而接口是在抽象类的基础上又抽象了一层。

一、抽象类和抽象方法

1.抽象方法只有方法名,没有方法体

//抽象类
public abstract class Person {//无参构造函数public Person(){}//有参构造函数public Person(String name){}//抽象方法public abstract void run();//非抽象方法public void sayHello(){System.out.println("hello,the last day of June");}
}

2.抽象类里可以没有抽象方法,但是只要该类包含一个抽象方法,那么这个类就是抽象类(that is to say,抽象类里可以有非抽象方法)。

3. 抽象类存在构造器(构造函数)吗?

有,并且有参无参都可以有。因为其子类实例化的时候要先调用父类的构造函数,也就是抽象类的构造函数,所以抽象类是有构造函数的。

4. 抽象类不能被实例化(虽然它有构造方法),只能作为其他类的父类

5. 但是由于类只能单继承的局限性,抽象类用的没有接口多接口可以实现多继承)。

6. 子类实现抽象类依然是extends关键字,子类必须实现抽象类的所有抽象方法

二、接口

1. 接口只能写“规范”,都是抽象方法,无法写具体的实现(不能出现非抽象的方法)。

2. 接口内的方法默认都是被“public abstract”修饰,可以不写;接口的属性默认都是被“public static final”修饰。but在抽象的时候一般只抽象方法,不会在接口里写属性。

3. 实现类用implements关键字,必须实现接口规定的所有方法

4. 接口没有构造函数,自然无法实例化(抽象类有构造函数,也不能实例化)。

5. 利用接口实现多继承。在下例中,当前类必须要实现UserService和TimeService的所有方法。

三、内部类

为什么这个类要放在内部?因为就外部那个类自己用,别的类都不用。

概念不用硬记,可以后续慢慢了解

1. 成员内部类

1)内部类如何实例化?

2)内部类可以获得外部类的private属性

2. 静态内部类

静态内部类不能获得外部类的private方法,因为静态类加载的时候id还没加载。

3. 局部内部类

在方法中的类

4.匿名内部类

java学习笔记(十)—— 抽象类、接口、内部类相关推荐

  1. JAVA学习笔记之抽象类与接口2020-3-22

    抽象类 先了解一下抽象类的概念. 一个完整的方法,是有: 1.方法声明 2.方法体 public void show(){方法体; } 而如果只包含方法声明,没有方法体,那么就称之为:抽象方法.(ab ...

  2. JAVA学习笔记 15 - 函数式接口、Lambda表达式和方法引用

    本文是Java基础课程的第十五课.主要介绍在JDK8中,Java引入的部分新特性,包括函数式接口.Lambda表达式和方法引用.这些新特性使得Java能够在按照面向对象思想进行开发的基础上,融合函数式 ...

  3. 【Java 学习笔记】 抽象类和接口

    抽象类:类的设计应当保证父类包含子类的共同特征,有时为了方便会将父类设计的特别抽象以至于没有具体实例,称之为抽象类. -多重继承:需要从多个类中派生出一个子类,这种能力叫做多重继承. -单重继承:每个 ...

  4. JAVA学习笔记第八天——接口作为方法参数和返回值、多态、内部类

    一.回顾: 权限修饰符: public -> protected -> (default) ->private 重写: 1.方法名和参数列表一致 2.子类中重写的方法, 返回值类型[ ...

  5. Java学习笔记_抽象/接口

    抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结束 抽象类:抽象方法所在的类,必须是抽象类.在class前面写上abstract 如何使用抽象类和抽象方法 不能直接创建new抽象类 ...

  6. Java学习笔记14(接口+工厂模式)

    文章目录 接口 接口的特点: **为什么要接口** 工厂模式 接口 Java不支持多重继承.有了接口,就可以得到多重继承的效果. 接口(interface)是抽象方法和常量值的定义的集合. 从本质上讲 ...

  7. 反射、Lambda表达式(Java学习笔记十二)

    文章目录 反射 Class 类 创建运行时类的对象 获取运行时类的完整结构 调用运行时类的指定结构 调用指定方法 调用指定属性 关于setAccessible方法的使用: 动态代理 Lambda表达式 ...

  8. Java学习笔记十(注解)

    1.介绍 注解是JavaSE5.0開始提供的一项新特性,利用此特性能够通过特定的注解标签为程序提供一些描写叙述性信息. 这些描写叙述性信息能够在编译或执行时为编译器.执行环境提供附加的信息.从而简化开 ...

  9. java学习笔记(十二)----集合

    集合类 集合类用于存储一组对象,其中的每个对象称之为元素,经常会用以的有Vector,Enumeration,ArrayList,Collection,Iterator,Set,List等集合和接口 ...

  10. Java学习笔记十五

    26. 下面介绍synchronized代码块,个人以为,重要度远远高于单纯的修饰synchronized方法: 一方面:高效率! 另一方面:后面涉及到的wait和notify方法,都要涉及 Sync ...

最新文章

  1. 什么?你还在使用fastjson,性能太差了
  2. Linux端日志加密,Linux学习--第十三天--日志、系统运行级别、grub加密
  3. Python 程序员经常犯的 10 个错误
  4. git@github.com: Permission denied (publickey).
  5. Mysql 无法插入中文,中文乱码解决
  6. 【script】python使用cx_Oracle模块访问Oracle
  7. Spring Boot学习总结(6)——SpringBoot解决ajax跨域请求问题的配置
  8. BC 2015在百度之星程序设计大赛 - 预赛(1)(矩形区域-旋转卡)
  9. 平常学习与实际应用场景
  10. 计算机术语解ssh,将Bash脚本SSH到计算机中而不提示密码和不使用密钥
  11. 用Redis实现分布式锁 与 实现任务队列【转载】
  12. 前端架构组件化开发系列二 (基于VUE 扩展组件)
  13. js调用qq互联api实现第三方登录
  14. matlab 教案,matlab第七讲教案.doc
  15. PKPM学习:关于“悬空柱”的问题
  16. new ext.toolbar控制按钮间距_消防控制室现场验收存在问题图解
  17. 扫雷JAVA课程设计报告感想,Java课程设计报告---扫雷游戏
  18. 乱谈计算机、转专业、考研
  19. js任意进制转换(二进制,八进制,十进制...三十六进制)
  20. Elasticsearch 入门(1):基本概念,安装教程,索引的创建,查询,删除,主键查询,修改,添加,聚合查询,条件查询

热门文章

  1. 2019非上海生源高校应届生落户指南
  2. 玩转Kafka—SpringGo整合Kafka
  3. 框架流程图绘制工具OmniGraffle 7 for Mac
  4. Linux系统的安装与设置
  5. 国内十大正规现货交易平台排名(2021版榜单)
  6. Jasper(2)——简单使用导出PDF报表
  7. Scala详细文本教学04
  8. 页面不调转改变浏览器地址栏的方法
  9. 2020.11.18第十三章 事件(事件处理程序;事件对象;事件类型:UI事件;焦点事件;鼠标与键盘事件 变动事件 模拟事件)
  10. [机器学习][1]--PLA算法