四月二十二日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语言保留特殊含义或者 ...
随机推荐
- 实验8 python库应用编程与体验
3.实验任务3 from turtle import * def square(size=50, rgb='orange'): '''绘制正方形 参数size指定边长 参数rgb指定画笔颜色 如果没有 ...
- sat初学入门资料2022-12
1. GlueMiniSatPPT-nabeshima.pdf A fast SAT solver with an aggressive acquiring strategy of glue clau ...
- AXI4_LITE总线vivado2019.1官方模板源码(verilog实现)
AXI lite总线读写时序 1. AXI_SLAVE源码 `timescale 1 ns / 1 ps module myip_v1_0_S00_AXI # ( // Users to add pa ...
- C#使用JSON相关
一.Json字符串转换为Dictionary /// <summary> /// JSON字符串转为 Dictionary /// </summary> /// <typ ...
- Alibaba Cloud Linux 3.2104 64位安装mysql5.6.45
1 .安装cmake wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz tar -zxvf cmake-2.8.10.2.tar.g ...
- 2.5基本算法之搜索 156:LETTERS
#include<iostream>#include<cstdio>using namespace std;char a[21][21];bool b[26]; int X[4 ...
- HBuilder uniapp手机定位
// 获取当前位置 getPosition: function() { this.GetLocation(function(res) { if (res) { this.longitude = res ...
- 正确理解RestFul 接口
一.REST# REST,即Representational State Transfer的缩写,翻译过来就是"表现层状态转化".不得不承认,我在刚开始看到这个名词的时候是一脸懵逼 ...
- 关于安装Wind金融终端后,启动QT后频繁跳出WDF.dll文件注册成功窗口的问题
安装Wind金融终端后,启动QT后频繁跳出WDF.dll文件注册成功窗口的信息. 经过排查后发现,主要问题出在系统环境变量上. 安装了wind金融终端后,用户系统环境变量PATH里多了两个wind相关 ...
- MATLAB默认路径修改
笔者曾尝试在软件界面的"设置路径"或者Parallel中修改默认路径,但多次尝试均失败.后来经人提点,MATLAB默认文件夹路径可以在桌面图标属性中"起始位置" ...