四月二十二日java基础知识
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基础知识的更多相关文章
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- Java基础知识系列——String
最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...
- 学习android学习必备的java基础知识--四大内部类
学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...
- JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...
- java基础知识梳理
java基础知识梳理 1 基本数据类型
- java基础知识回顾之---java String final类普通方法
辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /* * 按照面向对象的思想对字符串进行功能分类. * ...
- Java 基础知识(一)
Java基础知识篇: 一.关键字解释 1. final:修饰非抽象类,非抽象方法和属性, 以及修饰方法参数,代表“无法改变的”.出于对设计或者效率的考虑使用该关键字. final类无法被继承,fina ...
- java 基础知识三 java变量
java 基础知识 三 变量 1.作用域 {} 包围起来的代码 称之为代码块,在块中声明的变量只能在块中使用 2.常量 就是固定不变的量,一旦被定义,它的值就不能再被改变. 3.变量 变量必须在程序 ...
- java 基础知识二 基本类型与运算符
java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...
随机推荐
- 看懂插入才算看懂redis跳表
跳表的数据结构 forward相当于9之于8,12之于8 插入算法流程: 1.初始化两个数组update和rank数组:update表示每一层的前继节点.rank表示update节点到头结点的距离(用 ...
- reactHooks_useEffect
当在直接在组件内使用setState时,会产生"渲染次数过多"的错误 例如: const A = ( ) => { const [num,setNum] = useSta ...
- 小梅哥课程学习——串口发送应用之发送数据(可在vivado中仿真出现正确波形)
//1.底层代码源代码发送10位数据 module uart_pr( clk, reset_n, send_go, data, baud_set, tx_done, uart_tx ); input ...
- Qt编译问题之FTH (7156) Fault tolerant heap shim applied to current process
有时候Qt编译会出现FTH: (7156): *** Fault tolerant heap shim applied to current process. This is usually due ...
- drf(3)
1 不使用drf编写5个接口 1.1 路由 urlpatterns = [ path('books/', views.BookView.as_view()), path('books/&l ...
- Linux 常用杂项命令
1.查看监听端口的进程名称 lsof -i:[3306] # 3306是端口名称 2.查看PID进程文件的位置 ls -al /proc/51955/exe # 51955是进程PID
- samba缓存问题
samba 在第一次登录时,会在windows上缓存着登录密码,当你重新修改samba服务端的密码, 再次登录时,windows会自动用缓存的旧密码登录,导致的登录失败.
- How to Change Reset Retrieve the WebLogic Server Administrator Password on WLS 10.3.6 or earlier
To change the Administrator password on WLS 10.3.6 or earlier, perform the following steps depending ...
- tensorflow出现Failed to get convolution algorithm, cuDNN failed to initialize
网上大多的教程是说tensorflow的版本过高,或者说cuda和cudnn的版本不对,需要降级,但这样会很麻烦!!! 以下值得推荐!!! 解决方法一:在代码前加上下面的代码 from tensorf ...
- 在.NET中使用JWT
1.配置文件添加 //jwt配置文件 "JWT": { "SigningKey": "14fa5f2rrwsg627fs256fdgff2r5rf52 ...