包、接口和其他类特性
2021-11-16 18:46:50 0 举报
AI智能生成
讲述了限定符、静态变量和方法、Final类、方法和变量等内容
作者其他创作
大纲/内容
类和对象的作用
类的作用
创建对象
对象的作用
存储数据
完成任何
实现Java语言的各种功能
限定符
作用
组织类的不同决策和思维方式
本质
关键字
加入到定义中改变含义
常见的限定符
public、protected、private
控制对类、方法和变量的访问
static
创建类方法和类变量
final
固定类、方法和变量的实现
abstract
创建抽象类和方法
synchronized、volatile
线程
使用限定符
使用规则
将对应关键字放在要限定的
类
方法
变量
限定符位于语句的最前面
多限定符的使用
顺序无关紧要,只要位于要限定的元素之间即可
限定符可选
方法的返回类型不是限定符
控制对方法、变量的方法
控制访问作用
控制其他类如何使用你的类
封装
定义
类中的有些变量和方法只能在该类中使用,对与该类进行交互的其他类隐藏它们
作用
防止类中的变量被其他类读取或修改
4种级别的访问控制
默认
声明变量和方法时,不使用任何限定符
对同一个包中的任何类都是可用的
没有使用限定符的变量
同一包中的其他类都可以读取和修改它
没有使用限定符的方法
同一包中的其他类都可以调用它
私有
方法和变量完全隐藏以来,不被任何类使用
private
私有实例变量可以被所有类中的方法使用
私有方法可以被所属类中的其他方法调用
私有变量和方法都不能被子类继承
使用场景
其他类没有理由使用该变量时
其他类以不合适的方式修改该变量将带来严重的后果
优点
修改类的实现,不影响使用它的用户
公有
类中的方法和变量可供其他任何类使用
public
公有方法和变量被子类继承
使用场景
类变量
main()方法
保护
使方法和变量仅供
子类
同一包中的其他类
子主题
优点
让子类使用助手方法和变量,防止无关类使用他
访问控制和继承
通用规则
覆盖方法时新方法的访问控制不能比原来的方法更严格
继承方法的规则
超类中声明为公有的方法在子类中必须也是公有的
超类中声明为保护的方法在子类中可以是保护或公有
默认访问控制的方法,在子类中访问控制可以更严格
存取器方法
作用
访问私有变量
控制该变量将如何被使用
分类
读取变量
get开头
设置变量
set开头
优点
提高类的可重用性
静态变量和方法
static修饰的方法和变量
访问
类名和变量(方法)名,使用句点将其连接
类的对象名
Final类、方法和变量
特点
不会被修改
final含义
final类不能被继承
final方法不能被子类覆盖
final变量的值不能被修改
变量
常量变量
值不会改变
final通常和static一起使用
类变量
方法
不能被子类覆盖
原因
检索更快
提高类的运行效率
注意
私有方法是final,无需显式的声明
子主题
类
将类固定
不能被继承
特点
提高了Java语言的速度
注意
在final类中,所有方法都是final的
抽象类和方法
层次结构的特点
类的位置越高,定义的抽象程序越高
顶部的类只能定义所有类都有的行为和属性
永远不会被实例化的类
用于定义其子类都有的行为和方法
更具体的行为和属性在更低层定义
抽象类
abstract
构成
常规类能够保护的任何东西
构造方法
抽象方法
只有方法特征标
实现需要抽象类的子类中
非抽象类中不能声明抽象方法
包
本质
组织类的方式
组成
包含任意数量的类,这些类的用途相关或有包含关系
作用
能够将类组织成单元
减少了名称冲突带来的问题
能够大面积地保护类、变量和方法
用于唯一地标识类
使用包
使用包中的类
类位于包java.lang中
类名来引用
类位于其他包
全名包括包名来引用
频繁使用的类
导入单个类或整个包
导入后通过类名引用相应的类
没有指定所属包的类被放在一个未命名的默认包中
使用名称即可
完整的包名和类名
其他包中的类
使用全名
包名
类名
使用一两次的类
使用全名
类使用多次或者包名很长
将类导入
import声明
作用
导入包中的类
导入包中的所有类
使用星号代替类名
不能指定类名的一部分
L*导入所有以L开头的类
名称来引用类中的常量
引用常量时,须在前面加上类名
位置
文件开头
注意
导入类或导入整个包是一种编码风格
import static
引用指定类中的常量
后面跟一个类(接口)的名称和一个星号
类名冲突
提供包名的情况
在不同的包中使有多个名称相同的类
Classpath和类的位置
使用类的前提
能够在文件系统中找到这个类
查找类需要的两个元素
包名
文件系统的目录
环境变量
列出Jar文件和目录中查找目录
如果没有提供Classpath变量,JDK只可以在当前文件夹内查找类
创建自己的包
位置
将包中所有文件放在同一文件夹中
包名的各个部分对应相应文件夹
管理自己的包以及使用的其他包
将创建的包的根目录加入到Classpath中
创建包的步骤
选择包名
包命名方式
以自己的姓名命名
涉及的Java系统部分来命名
开放源代码的方式发布
商业产品
得到包名的规则
将域名中的元素颠倒多来
确保不会提供同名的包
包名不使用大写字母
创建文件夹结构
创建一个与包名对应的文件夹结构
将类加入到包中
import语句之前添加package声明和包名
package声明必须是是源代码文件的第一行
在注释或空行之后,在import声明之前
包和类访问控制
让类在包外可见并可导入,在定义时使用public
import语句使用星号时,导入的只是包中的公有类
对类设计时,对整个包进行全盘考虑
如何创建优秀的包
须定义一组小型的,清晰的公有类和方法
接口
作用
其他类要实现的行为模板
类和对象的设计方面提供了重大优点
单继承面向对象编程方法提供了有益的补充
在使用类的地方,几乎都可以使用接口来代替
定义
是一组抽象行为,可以添加超类不支持的行为
包含抽象方法定义和常量
单继承存在的问题
对类层次的简化是受限制的
接口和类
在源文件中声明,被编译为.class文件
程序员说类时,指的时类或接口
接口不能被实例化
实现和使用接口
使用接口
在类定义中使用implements
实现接口
须实现接口中的所有方式
类实现接口后,其子类将继承这些新方法
实现多个接口
可以在自己的类中包含任意数据的接口
类将实现这些接口中的所有行为
实现方式
将名称使用逗号分开
缺点
可能将问你题复杂化
两个接口定义相同方法的解决方案
方法特征标相同
实现一个方法
同时满足
方法参数列表不同
实现两个方法特征标
分别满足
参数列表相同返回值不同
接口设计有缺陷
重新设计接口
创建和扩展接口
新接口
interface
接口定义内
方法
公有和抽象
没有方法体
变量
公有
静态
final
本身
公有或受保护
没有限定符为public
可以属于某个包
接口中的方法
抽象的
通用参数
创建
将方法参数定义为接口类型
使适用范围
适用于接口的任何类
扩展接口
extends
接口没有根
实现多重继承
内部类
顶级类
属于某个包的
作用另有一个顶级类的静态成员
提供包式组织方式
实现方式
在类中定义类
优点
对其他所有类都不可见
避免名称冲突
访问在顶级类中的变量和方法
本质
短小的类文件,旨在实现某种目的
名称
与保护它的类的名称相关联
使用
名称引用包含
它的类的元素
它的代码块中的局部变量
0 条评论
下一页