资源描述
类基础部分
一面向对象基本知识
1. 面向对象是语言的重要特征之一;
2. 面向对象的三大特征:封装、继承、多态;
封装
封装在面向对象的技术中是隐敝信息的一种机制,是隐藏对象的属性和实现细节,仅对外公开接口,以控制在程序中的读和修改的访问级别,它的目的增强安全性,简化编程;
封装原则:
1. 隐藏属性和方法,提供对外接口;
2. 隐藏尽量多的东西
3. 好处:将变化隔离,便于使用,提高重用性,安全性;
在语言中,对象被抽象成为类,,因此类是程序封装的最小单位;
继承
继承描述两个类之间的关系,允许一个新类包含另一个以有类的状态和行为;这样可以用一般的类去特殊化,可派生出一系列的子类,使父类和子类关系层次化,降低复杂度,通过对共性的描述,减少类的重复说明;
子类的派生过程就是类的继承,继承是抽象分层管理机制;
单继承指任何子类只能由一个父类派生;
多继承指一个子类由多个父类产生;
单继承是树状结构
多继承为网状结构;
中只有单继承,没有多继承;
接口是一种特殊的继承,相当于多继承;
多态
多态允许一个类中有多个同名方法,但方法的具体实现却不同的机制;这种在一个程序当中同名的方法可用不同代码实现的特性就称为多态;
二类
1. 类由数据成员和方法成员组成;
2. 数据成员是变量,用来保存数据,也称字段;
3. 数据成员的类型可以是基本数据类型,复合数据类型,也可以是类;
4. 方法成员是实现操作的代码,也称函数,
5. 中数据成员和方法成员,的先后顺序无关紧要;
********************************************************
6. 类成员中可用的修饰符有:、、;
7. 可以在类外访问(即允许所有的类来访问);
8. 为私有成员,只能在本类的内部访问;
9. 是保护的成员,只能在类外或子类中访问(仅允许在相同包的类和该类的子类来访问);
********************************************************
10. 实例变量:及类的对象关联,属于类的对象;
类的每一个对象,都有属于自己的实例变量,,对实例
变量进行自己管理,不同的对象通过自己的实例变量及赋
值来进行区分,对自己的实例变量赋值,不影响其它的实
例变量;
11. 类变量
类变量:及类关联,属于类,由类的所有对象共享;
解释器,可以为每个对象复制一套实例变量,
但类变量只由一套,只属于类,可以被所有的变量访问,
类变量的值改变后,类所有的变量均使用改变后的新值;
关键字修饰的成员变量为类变量;
12. 实例变量属于类的对象,只有创建对象,才会有实例变量;
类变量属于类,即使没有对象,类变量也存在;
13. 实例方法和类方法同实例变量和类变量一样;
类变量语法和类方法语法:
类名(或对象名).数据成员
类名.方法成员
三类和对象的使用
1. 类的定义存放在源文件中,编译后在文件中
2. 使用类,即使用类文件,以及定义和使用类的对象;
3. 类的使用方法:
l 在类的方法中定义和使用类的对象,此时只有一个类文件;
l 将类独立存放在一个文件中,然后再另一个类中使用它;
4. 定义对象:
类作为类型使用,定义好类之后,就可定义类的对象变
量;类的对象用关键字来创建;赋值语句建立对象变量
及类对象的引用;
如将一个对象变量赋值给另一个对象变量,意味着两
个对象变量引用同一个对象;
当一个对象不再使用时,可将对象变量值设为;这
样只是撤消了引用,删除了对象和变量间的联系,变量和对
象都还存在;
变量超出其使用范围时,变量才彻底消亡;对象的消
亡,由“垃圾收集器”自动处理;
5. 数据成员的初始化:
不管是实例变量还是类变量,都可以在声名时进行初始
化;普通的基本数据类型变量,必须进行初始化赋值,否则
不能使用;
类的数据成员,没进行初始化,“解释器“会自动
初始化;
6. 八种基本数据类型的默认值:
类型位长默认值 取值范围
1
8 0 -128~127
16 ‘\u0000’‘\u0000’~‘\’(0~65535)
16 0 -32768~32767
32 0 -231~231-1
640-263~263-1
32 0.0 1.445或3.402823538
64 0.0 4.9324或1.7976938
7. 初始化块:
初始化块指类中独立的一对大括号里面的代码;分
静态初始化块和动态初始化块;(静态代码块和构造代
码块);
静态代码块由修饰的,动态代码块属于实例
变量;
静态代码块给类进行初始化,随类加载而加载,且
只执行一次,优先于主函数;
动态初始化块,是一对大括号,对象建立就运行优
先于构造方法;构造方法给对象进行初始化;构造代码块能给所有对象的进行初始化
8. 构造方法及重载:
构造方法在创建对象时调用,为对象的实例变
量进行初始化;
特点如下:
方法名及类名相同;
无返回值和返回类型(包括);
只能在创建对象时调用,不能由
对象调用;
如没有定义构 方法,则编译器会自动
创建一个不作操作的默认构造方法
构造代码块,优先于构造方法;
当要使用不同个数,不同类型的参数来初始化时,
就需要重载构造方法;
四 关于方法
1. 定义方法:
方法由方法名和代码块组成,有参数和修饰符;
如要从方法返回值,则要执行返回值的类型,如
没有返回值,其返回类型为
其修饰符有
修饰符说明方法的访问性和静态成员;
2.
方法体执行完成,方法结束;如要从方法返回值,则
要用语句;
如方法没有返回值,也可以用不带参数的
语句从方法返回;
方法中可以由多个语句;
在运行方法时,遇到语句就返回调用方法的
程序;
3. 形参和实参:
形参是定义方法时指定的参数;作用于方法内部的
局部变量,指明参数的个数和类型,并在方法
内部引用实参的值;
实参是方法调用时指定的参数;通常为变量常量,
表达式;
参数传递递时,形参和实参是一一对应的;
4. 变量:
5. 数组参数:
数组作为参数时,还是用的传值机制,只是传递
时,将实参数组变量的值复制给形参,而不是复制
数组的值,也就是实参数组变量及形参数组变量引
用同一个数组;如在方法中修改形参数组的值,那
么实参数组元素的值也会发生改变;本质上为同一
个数组,名称不同而已;
6. 对象参数;同数组参数一样
7.
关键字用于声名形参为常量,也即是不
能在方法中修改形参变量的值;因为参数采用传值机
制,对基本数据类型不起作用,当用于对象变
量参数时,表示不能修改对象的引用;但还是克以通
过对象变量来修改对象;
8. 递规的方法
( n){
(1){
1;}{
n*(1)}
}
9. 方法重载:
方法重载就是一个类中,用同一方法名定义多个方
法叫重 载;重载通过不同的形参来区别;根据
方法名,形参类型,形参顺序确定方法在类中的签
名;解释器,通过方法签名来确定调用的方法;
10. 静态成员:
静态成员指用修饰的数据成员和方法成员
静态成员由类的所有对象共享,通过类名或对象名
来引用;静态成员属类变量或类方法;
在静态的方法中,只能访问静态成员,不能使用
非静态成员;非静态成员属于对象,只有建立对象
之后非静态成员才成在,并且只能通过对象名来引
用;
11. 常量成员
常量成员指被修饰的数据成员或方法成员
修饰的成员不能在子类中重载或隐藏;
数据成员的初始化;可以声名时初始化,
可以在初始化块中初始化;(静态初始化块,必须用
静态的成员),还可以在构造方法中初始化;
数据成员一经初始化,不可以修改其值,数据成员还可以加修饰符,成为静态常量;
成员用于具体的对象时,则在构造方法或态代码块中初始化;
静态的数据成员属于类,所以应在声名,或静态初始化块中进行;
五包
1. 包是中类的组织方法,是保存类的目录结构;保证包中的类具有唯一的名称;
2. 包的定义:
包用定义;
语句是除空格和注释外,源文件的第一条语句;
类的源文件可以放在任意位置,但编译器生成的类文件,
则应放在包名对应的目录中;
包名用英文注点符号表示包的层次;
3. 包的使用:
包的使用用语句;
如没有使用语句,就应使用包括包名的完整类名;
如要使用包中的多个类,可用*号代表包中所有类;
当源文件和包都在同一个目录中时,不需要为编译器指定
路径;如不在同一目录,则用指定路径;
如: – d:\
当执行的类和使用的包,都不在当前目录中,指定路径如下,执行类的路径放最后;
如: – d:\:\
4. 扩展包
文档可以是可执行文件,也可以是扩展包;
扩展包中包含类文件;
如果类定义了包,文档应包含包的目录结构;
要制作文档,要使用中的命令;
如:
\*
为命令参数,表示按指定的文件名
创建文档;\*表示把目录中 所
有的类文件包含在中,包括目录;
在创建文档时,通常在包所在的目录下执行命
令,用包的相对路径指定要包含的文件,这样才能在
文档中创建相应的目录结构;
文档的名称可及类的包名相同,也可不同;
文档采用格式压缩,所以可用支持格式的
任何工具来创建文档;
六类和类成员的可访问性
可访问性决定类成员是否可在类之外访问,包中的类可在类之外访问;
无关键字:可被同一个包中所有类的方法访问;
: 可被任何类中的方法访问;
: 只能被同一个类中的方法访问,不能在类的外部访问;
:可被同一个包中的所有类的方法访问,也可被本类的子类的方法访问;
七 常用包
用于嵌入网页的
:应用程序的图形界面
: 编写组件
:处理系统输入,输出流的;
:包含语言的基础类,该包中的类自动导入程序;
不用语句;
: 编写网络应用程序;
:用于定义各种数据类型的缓冲区,还包含其它包;
:编写关于数据库应用程序;
。:用于编写图形应用界面程序;取代;
:处理集合,事件模型,日期事件;
:处理;
八 嵌套类
1. 类中包含类,被包含的类称嵌套类: 包含的类叫外部类;
2. 嵌套类和类成员一样,都是外部类成员;
3. 类成员的可访问性都适用于类部类;
4. 修饰的嵌套类称静态嵌套类,否则为非静态嵌套类
两者使用方法由所不同;
5. 静态嵌套类,及静态的数据成员和方法类似,都可创建对象,静态嵌套类及外部对象无关,没有外部类的对象,一样可以创建静态嵌套类的对象;
6. 静态嵌套类中允许有静态和非静态的成员;静态嵌套类中可以访问外部类的静态成员,,不能访问外部类的非静态成员;
7. 动态的嵌套类
及动态的数据成员和方法类似,动态嵌套类属外部类
的对象,只能通过外部类的对象才能创建动态嵌套类的对
象;
如:1 1();
。 ();
在外部类中,只有静态的嵌套类才能用直接创建对象;
8. 在外部类之外使用嵌套类;
首先嵌套类和外部使用成员不能声名为;
如果外部类包含静态嵌套类和外部嵌套类,则外部类之外直接访问静态嵌套类的静态成员时,应使用外部类的名称限定嵌套类;
创建静态嵌套类对象也应使用外部类的名称限定符;
创建静态嵌套类对象后,便可使用该对象的方法访问静态嵌套类静态成员和动态成员;
及动态的数据成员和方法类似,动态嵌套类属外部类
的对象,只能通过外部类的对象才能创建动态嵌套类的对
象;
创建动态嵌套类的对象后,就可用该对象访问其动态
成员和动态方法;
九几个关键字总结
: 1可以修饰类,全局变量,函数;
修饰类,不可以被继承;
修饰的函数不可以被重写
修饰的变量不可以被再次赋值;
在修饰时,必须赋值;
常量的命名,字母全部大写,由多个单词组成,则中间用下划线分割;
:
1. 是一个修饰符;用于修饰成员(包括成员变量和方法);
2. 修饰的成员变量只由一份,
3. 当成员被修饰后,访问方式多一种,除对象调用外,和还能类名直接调用;
4. 的特点: 随类的加载而加载;
优先于对象的存在;
被锁有对象,共享;
可以类名直接调用;
5. 存放位置:类变量随着类的加载,而存在于 类存区
实例变量,随着对象的建立。而存在于堆内存;
6. 静态的方法只能访问静态成员
7. 非静态的方法既能访问静态成员,也能访问非静态成员;
8. 静态的方法中不可定义 ,等关键字;因静态优先于对象的存在,所以不能用
等关键字;
9. 类变量生命周期最长,随着类的消忘而消忘;
实例变量周期比类短,随对象的消失而消失
静态代码块:
1.随着类的加载而执行,并且只执行一次,优先于主函数;用于给类进行初始化;
1. 在类的方法中使用关键字代表使用该方法对象的引用;
2. 解决方法中成员变量及参数同名的问题;
3. 可以看做一个变量,它的值是当前对象的引用;
1. 返回方法指定类型的值;
2. 结束方法的执行
()
1. 所有对象,都有()这个方法;
2. 创建类是美有定义的方法时,输出对象时会输出哈希玛值;
3. 通常只是为方便输出,如不是类型的话,就会自动调用方法;
- 15 - / 15
展开阅读全文