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. 面向对象1(Java)

    什么是面向对象 面向对象编程(oop) 面向对象编程的本质是:以类的方式组织代码,以对象的组织(封装)数据 抽象 三大特征:封装.继承.多态 从认识论角度考虑是先有对象后有类.对象是具体的事物.类是抽 ...

  2. Windows Powershell个性化设置

    1. 设置Powershell prompt只显示当前目录: 2. 设置Powershell title为当前路径: 这个文件的路径为:echo $profile # file location:ec ...

  3. 微信小程序ECharts通过调用api接口实现图表的数据可视化

    小程序ECharts使用接口调入数据 首先附上js文件链接:axios.js 提取码:AxIo 将此放到小程序目录下的utils文件夹下 在已经完成图表的js文件中完成以下修改: ①引用axios.j ...

  4. java中锁的应用(synchronized)

    在面试菜鸟的时候碰到的锁的编程问题,没答好,记录一下: package com.xielu.test; /** * Hello world! * */ public class App { priva ...

  5. linux 系统安装配置jdk + mysql + redis (离线状态)

    ​ 系统版本:centos7.7 环境搭建(离线状态) 安装java环境 安装配置mysql数据库 安装配置redis数据库 安装java环境 jdk版本:jdk-8u5-linux-x64.rpm ...

  6. LeetCode 之 108. 将有序数组转换为二叉搜索树

    原题链接 思路: 二叉搜索树的定义: 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不空,则右子树上所有结点的值均大于它的 ...

  7. python3安装turtle失败问题

    失败截图: 解决办法: 1.下载turtle-0.0.2 2.解压文件夹到指定目录 3.打开setup.py找到第四十行修改 4.打开cmd进入turtle-0.0.2所在文件夹的上一层文件夹,执行p ...

  8. 网络存储服务ip-san搭建

                                         网络存储服务ip-san搭建 ip-san简称SAN(Storage Area Network),中文意思存储局域网络,ip- ...

  9. openssl 全面支持国密SM2/SM3/SM4加密算法

    sm4展示 代码 /** 文件名: https://github.com/liuqun/openssl-sm4-demo/blob/cmake/src/main.c */ #include <s ...

  10. [BUUCTF]极客大挑战 2019EasySQL1 write up

    顾名思义,简单的SQL注入! 先浅了解一下注入:SQL 注入(SQL Injection) 是发生在 Web 程序中数据库层的安全漏洞,是网站存在最多也是最简单的漏洞. 主要原因是程序对用户输入数据的 ...