1.利用接口实现类的多重继承:
java语言中接口的主要作用是可以帮助实现类似于类的多重继承功能。
多重继承,是指一个子类可以有一个以上的直接父类,该子类可以直接继承它所有父类的
非私有成员。
2.一个类实现多个接口时,在implements子句中用逗号分隔开各个接口名。这种情况下如果
把接口理解成特殊的类,那么这个类利用接口实际上就获得了多个父类,即实现了多重继承
3.接口中的静态方法和默认方法
对接口中静态方法的访问,可以通过接口名直接进行访问,即用“接口名.静态方法名()”的
形式进行调用.例如:Face.show()
4.接口中的默认方法用 default修饰符来定义,默认方法可以被子接口或被实现该接口
的类继承,但子接口中若定义名称相同的默认方法,则父接口中的默认方法被隐藏。
5.接口中的默认方法虽然有方法体,但不能通过接口名直接调用,必须通过接口实现类的实例
进行访问,即通过“对象名.默认方法名()”的形式进行访问。
6.return后面可以返回一行字符串
例如:return "我会返回一行字符串";
7.解决接口多重继承中名字冲突问题:
如果子接口中定义了与父接口同名的常量或者相同名称的方法,则父接口中的常量被隐藏,
方法被覆盖
8.对于常量,若名称不冲突,子接口可以继承多个父接口中的常量,如果多个父接口有同名
的常量,则子接口不能继承,单子接口可以定义一个同名的常量。对于多个父接口中存在同名
的方法时,此时必须通过特殊的方法解决
9.要解决方法名冲突问题,可以在接口的实现类中提供一个同名方法的新实现,或委托其中
一个父接口中的方法。
10.
1)在多个父接口的实现类中解决同名默认方法的名字冲突问题有两种办法:一种是提供同名
的一种新实现;另一种是委托一个父接口的默认方法
2)如果两个父接口的实现类中有一个提供的不是默认方法,而是抽象方法,则只需要在接口
的实现类中提供同名方法的一个新实现即可
3)如果两个父接口中的同名方法都是抽象方法,则不会发生名字冲突,实现接口的类可以实现该
同名方法即可,或者不实现该方法而将自己声明为抽象类
4如果一个类继承一个父类并实现了一个接口,而从父类和接口中继承了同名的方法,此时
采用“类比接口优先”的原则,即只继承父类的方法,而忽略来自接口的默认方法
11. 枚举:
对类似这种一个变量有几种固定取值时,将其声明为枚举类型,再呀应用上更加方便与安全
12.枚举类型的声明必须使用关键字 enum,其语法格式:
[修饰符] enum 枚举类型名{
枚举成员
方法
}
13.修饰符可以为public、private、internal
14.枚举类型名两层含义:一是作为枚举名使用;二是表示枚举成员的数据类型,正因如此
枚举成员也称为枚举实例或枚举对象
15.枚举成员可以一一列出的枚举常量,所以枚举成员也被称为枚举常量或枚举值。任意
两个枚举成员之间不能重名,各枚举值之间可以用“,”分隔
16.枚举这种类与普通类的区别:
1)枚举可以实现一个或多个接口,使用enum关键字声明的美剧默认继承了java.lang.Enum
类,而不是继承java.lang.Object类,因此枚举不能显示地继承其他类
2)使用enum定义非抽象的枚举类是默认使用final修饰,因此枚举类不能派生子类
3)创建枚举类型的对象时不能使用new运算符,二是直接将枚举成员赋值给枚举对象
4)因为枚举是类,所以它有自己的构造方法和其他方法。但构造方法只能用private访问
修饰符,如果省略默认使用private修饰符,如果强制使用访问修饰符,则只能使用private
修饰符
5)美剧的所有成员必须在枚举体的第一行显示列出,否则该枚举不能产生枚举成员。
枚举成员默认使用public static final修饰
17.例子:声明一个表示方向的枚举类型
public enum Direction
{EAST,SOUTH,WEST,NORTH}
定义完枚举类型后便可以枚举类型名直接引用其枚举成员,如Direction.SOUTH
18.由于枚举成员都是常量,所以按命名惯例它们都用大字母表示。
19.最后一个枚举常量NORTH的分号可以省略,但如果枚举中还声明了方法,那么最后的
分号不能省略
20.不包含方法的枚举:
当访问枚举类型的成员时,直接使用枚举名调用枚举成员即可,即“枚举名.枚举成员”
也可使用Enum类定义的valueOf()方法通过“枚举名.valueOf()”的形式进行调用来
获取枚举类的对象
21.包含属性和方法的枚举
枚举的构造方法只是在构造枚举实例时被调用。每个枚举实例值都是枚举的一个对象,
因此创建每个枚举实例时都需要调用该构造方法
22.包的概念:
所谓包就是java语言提供的一种区别类名空的机制,是类的组织方式。
每个包中有文件夹,包中还可以有包,称为包等级
同一个包中的类名不能重复,不同包中的类名可以相同
JAVA语言中的包把各种类组织在一起,使得程序功能清楚、结构分明
23.使用package语句创建包
package 包名1[.包名2[.包名3]...];
在package语句中用“.”来指明文件夹的层次
例如:package.cgj.ly.mapackage;指定这个包中的文件储存在文件夹cgj\ly\mypackage
24.注意:包名与对应文件名的大小写法一致
25.由于java语言的package是用来存放类与接口的地方,所以把package译为“类库”
java提供用于程序开发的类库称为应用程序接口(API)
26.java 实用包
java.lang:语言包
java.io:输入输出的文件包
java.util:实用包
java.net:网络功能包
java.sql:数据库连接包
java.text:文本包

总结:今天结束啦第八章继承、抽象、接口与枚举着一章,是对类的扩展与延伸,从前面的第六章类与对象

到第七章的类的私有成员与公有成员、方法的重载、构造方法、静态成员、对象的应用,感触还是自己学了些东西

但还没有很强地理解,后面讲继续巩固,这样基础才能坚固。一日接一日,总会相同的

四月二十二日java基础知识的更多相关文章

  1. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  2. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  3. Java基础知识系列——String

    最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...

  4. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

  5. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  6. java基础知识梳理

    java基础知识梳理 1 基本数据类型

  7. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

  8. Java 基础知识(一)

    Java基础知识篇: 一.关键字解释 1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”.出于对设计或者效率的考虑使用该关键字. final类无法被继承,fina ...

  9. java 基础知识三 java变量

    java  基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...

  10. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

随机推荐

  1. Java开发的事务

    代码来自https://blog.csdn.net/weixin_42950079/article/details/99674292 可以看出jdbc的一个事务有这么几个步骤:1.关闭sql自动提交: ...

  2. fgets()函数的详解以及使用时需要注意的一些细节-C语言基础

    这篇文章要探讨的是"fgets()函数的详解以及使用时需要注意的一些细节".涉及fgets()函数的应用和需要注意的问题.属于C语言基础篇(持续更新). fgets()(函数原型: ...

  3. Linux子系统之【内存管理】

    1.内存管理的意义? 内存是进程运行的地方,相当于是战场.完善的机制能让进程多快好省地运行. 2.原始内存管理是怎么样的? 简陋(直接运行在物理内存上).不安全(无隔离,无权限) 缺点:容易出错,进程 ...

  4. 【CSS】CSS字体图标iconfont

    CSS字体图标iconfont展示的是图标,本质上还是字体 使用字体图标步骤: 字体图标的下载 将字体图标引入到HTML 字体图标的追加(以后添加新的小图标) 推荐下载网站 icomoon字库http ...

  5. 2020/03/24 HTML基础复习笔记

    2020-03-24 15:49:30 下午好! 这是我开通博客的第二天也是在钉钉上网课的又一天,为了应对考试现在复习到了HTML基础知识,本打算用VS敲想了想还是用了XMind(真的好用!!!)文件 ...

  6. git—分支设置

    什么是分支? 项目以上线,但需要开发新的功能.不能直接在项目上进行开发的,这时候就需要创建一个分支,去完成新功能的开发.测试等.完成之后合并到主分支上面.如果新功能的开发不用分支,导致的问题就会有很多 ...

  7. 2020/5/26-笔记:Oracle数据库表空间的管理

    1新建表空间 (1)普通(本地管理)表空间: create tablespace 表空间名 datafile'OS系统文件路径\文件名.dbf' size nM; 或 create tablespac ...

  8. Blob文件下载type类型

    let url = window.URL.createObjectURL(new Blob([文件流(一般为res.data)], {type: "Blob类型"}) let li ...

  9. 配置git到码云

    一.安装完git之后,对项目文件点击右键选择Git Base Here #Git 全局设置用户名与邮箱 git config --global user.name "" git c ...

  10. 116、商城业务---分布式事务---seata的AT模式存在的问题&&最终一致性库存解锁逻辑

    seata的AT模式不适合高并发的项目,因为它需要加锁来保证回滚.因此我们的订单服务方法中就尽量不能使用@GlobalTransactional来管理分布式事务. 因此在订单服务中,我们使用下面这种方 ...