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