java第四章类与对象
1. ⾯向对象编程主要体现下列三个特征:封装性,继承,多态。
2. 类是java的基本元素,⼀个java应⽤程序就是由若⼲个类所构成。类是java语⾔中最重要的“数据类型”,类声明的变量被称作对象变量,简称对象。类是对象的模板,没有类就没有对象。
3. 类的定义包括两部分:类声明和类体。基本格式为:
class 类名{
类体的内容
}
4. 如果类名使⽤拉丁字母,那么名字的⾸字母使⽤⼤写字母;类名最好容易识别。
5. 类的⽬的是抽象出⼀类事物共有的属性和⾏为,并⽤⼀定的语法格式来描述所抽象出的属性和⾏为。类是⼀种⽤于创建具体实例(对象)的数据类型。
6. 类体的内容由两部分构成:变量的声明(所声明的变量被称为成员变量或域变量)和⽅法的定义。
7. 成员变量的类型可以是java的任何⼀种数据类型,基本类型:整型,浮点型,字符型,逻辑类型;引⽤类型:数组,对象和接⼝。成员变量在整个类内都有效,其有效性与它在类体中书写的先后位置⽆关。
8. 编程风格:(1):⼀⾏只声明⼀个变量;(2):变量的名字除了符合标识符规定外,名字的⾸单词的⾸字母使⽤⼩写,如果变量的名字由多个单词组成,从第2个单词开始的其他单词的⾸字母使⽤⼤写;(3):变量名字见名知意。
9. ⽅法的定义包括两部分:⽅法头和⽅法体。⼀般格式为:
10. ⽅法头{
⽅法体的内容
}
11. ⽅法返回的数据的类型可以且必须是java中的任何⼀种数据类型,当⼀个⽅法是void类型时,该⽅法就不需要返回数据。在⽅法体中声明的变量和⽅法的参数被称作局部变量,只在⽅法内有效,⽽且与其声明的位置有关。⽅法的参数在整个⽅法内有效,⽅法内的局部变量从声明它的位置之后开始有效。
12. 如果局部变量的名字与成员变量的名字相同,那么成员变量被隐藏,即被成员变量在这个⽅法内暂时失效。如果想⽤被隐藏的成员变量,必须使⽤关键字this。
13. 成员变量有默认值,局部变量没有默认值,因此在使⽤局部变量前,必须保证局部变量有具体的值。
14. 对成员变量的操作只能放在⽅法中,⽅法使⽤各种语句对成员变量和⽅法体中声明的局部变量进⾏操作。
15. 构造⽅法是类中的⼀种特殊⽅法,当程序⽤类创建对象时需使⽤它的构造⽅法。类中的构造⽅法的名字必须与它所在的类的名字完全相同,⽽且没有类型。允许在⼀个类中编写若⼲个构造⽅法,但必须保证它们的参数不同(参数个数,参数类型)。如果类中定义了⼀个或多个构造⽅法,那么java不提供默认的构造⽅法。
16. 创建对象包括对象的声明和为对象分配变量两个步骤。
17. 对象的声明⼀般格式为:
类的名字 对象名字;
18. 使⽤new运算符和类的构造⽅法为声明的对象分配变量,并返回⼀个引⽤值给对象名称,即创建对象。
java重写和重载的区别19. 空对象不能使⽤,因为它没有得到任何的实体,必须再进⾏为对象分配变量的操作,即为对象分配实体。假如程序中使⽤了空对象,在运⾏时会出现异常NullPointException。
20. new运算符只能和类的构造⽅法进⾏运算,运算的最后结果是⼀个⼗六进制的数,这个数称作对象的引⽤。
21. 抽象的⽬的是产⽣类,⽽类的⽬的是创建具有属性和⾏为的对象。
22. 对象调⽤⾃⼰的变量(体现对象属性),⼀般格式为:对象.变量; 对象调⽤类中的⽅法格式为:对象.⽅法;
23. 类中的⽅法可以操作成员变量,当对象调⽤⽅法时,⽅法中出现的成员变量就是指分配给该对象的变量。
24. ⼀个类声明的两个对象如果具有相同的引⽤,⼆者就具有完全相同的变量(实体),⽽且java有所谓的“垃圾收集”机制,这种机制周期地检测某个实体是否已不再被任何对象所拥有,就释放实体占有的内存。如果希望java虚拟机⽴刻进⾏“垃圾收集”操作,可以
让System类调⽤gc()⽅法。
25. 在java语⾔中没有析构⽅法。
26. Java应⽤程序有个主类,即含有main⽅法的类,java应⽤程序从主类的main⽅法开始执⾏。
27. 如果需要编译某个⽬录下的全部java源⽂件,可以进⼊该⽬录,使⽤通配符*代表各个源⽂件的名字来编译全部的源⽂件。如:
C:\chapter4>javac*.java
28. 参数属于局部变量,当对象调⽤⽅法时,参数被分配内存空间,并要求调⽤者向参数传递值,即⽅法被调⽤时,参数变量必须有具体的值。
29. 在java中,⽅法的所有参数都是“传值”的,也就是说,⽅法中参数变量的值是调⽤者指定的值的拷贝。因此,⽅法如果改变参数的值,不会影响向参数“传值”的变量的值,反之亦然。
30. 对于基本数据类型的参数,向该参数传递的值的级别不可以⾼于该参数的级别。
31. 当参数是引⽤类型时,“传值”传递的是变量中存放的“引⽤”,⽽不是变量所引⽤的实体。对于两个
相同类型的引⽤型变量,如果具有同样的引⽤,就会⽤同样的实体,因此,如果改变参数变量所引⽤的实体,就会导致原变量的实体发⽣同样的变化;但是,改变参数中存放的“引⽤”不会影响向其传值的变量中存放的“引⽤”,反之亦然。
32. 可变参数是指在声明⽅法时不给出参数列表中从某项开始直到最后⼀项的名字和个数,但这些参数的类型必须相同。可变参数使
⽤“…”表⽰若⼲个参数,这些参数的类型必须相同,并且最后⼀个参数必须是⽅法的参数列表中的最后⼀个参数。x.length等于x所代表的参数的个数。
33. 在声明成员变量时,⽤关键字static给予修饰的称作类变量,否则称作实例变量(类变量也称作static变量,静态变量);static需放在变量的类型的前⾯。
34. 实例变量和类变量的区别:(1)不同对象的实例变量互不相同;(2)所以对象共享类变量;(3)类变量不仅可以通过某个对象访问,也可以直接通过类名访问。
35. 类中的⽅法也可分为实例⽅法和类⽅法。加static关键字修饰的是类⽅法(静态⽅法),static需放在⽅法的类型的前⾯。
36. 实例⽅法和类⽅法的区别:(1)对象调⽤实例⽅法。当我们创建第⼀个对象时,类中的实例⽅法
才分配了⼊⼝地址,当再创建对象时,不再分配⼊⼝地址,也就是说,⽅法的⼊⼝地址被所有的对象共享,当所以的对象都不存在时,⽅法的⼊⼝地址才会被取消。实例⽅法不仅可以操作实例变量,也可以操作类变量。但不能通过类名调⽤,只能由对象调⽤。(2)类名调⽤类⽅法。在该类被加载到内存时,就分配了相应的⼊⼝地址。类⽅法的⼊⼝地址直到程序退出才被取消。类⽅法不可以操作实例变量。(3)对于static⽅法,不必创建对象就可以⽤类名直接调⽤它。
37. Java中存在两种多态:重载和重写,重写是与继承有关的多态。对象的⾏为通过类中的⽅法来体现,那么⾏为的多态性就是⽅法的重载。
38. ⽅法重载:⼀个类中可以有多个⽅法具有相同的名字,但这些⽅法的参数必须不同(参数个数不同或参数列表中对应的某个参数的类型不同)。⽅法的返回类型和参数的名字不参与⽐较。
39. this是java的关键字,表⽰某个对象。this可以出现在实例⽅法和构造⽅法中,但不可以出现在类⽅法中。
40. this关键字出现在类的构造⽅法中,代表使⽤该构造⽅法所创建的对像;this关键字出现在实例⽅法中,代表正在调⽤该⽅法的当前对象,格式为:this.成员变量;当static成员变量在实例⽅法中出现时,默认的格式是:类名.成员变量;在通常情况下,可以省略实例成员变量名字前⾯的“this.”以及static变量前⾯的“类名.”。
41. 类的实例⽅法可以调⽤类的其他⽅法,对于实例⽅法调⽤的默认格式是:this.⽅法;对于类⽅法调⽤的默认格式是:类名.⽅法;当逻辑关系明确时,⼀个实例⽅法调⽤另外⼀个⽅法时可以省略⽅法前⾯的“this.”和“类名.”
42. 包是java语⾔有效地管理类的⼀个机制。通过关键字package声明包语句,格式为:package包名;如果源程序中省略了package语句,源⽂件中所定义命名的类被隐含地默认为是⽆名包的⼀部分,只要这些类的字节码被存放在相同的⽬录中,那么它们就属于同⼀个包,但没有包名。包名可以是⼀个合法的标识符,也可以是若⼲个标识符加“.”分割⽽成。
43. 如果⼀个类有包名,那么就不能在任意位置存放它,否则虚拟机将⽆法加载这样的类。如:packagetom.jiafei;那么储存⽂件的⽬录结构中必须包含如下结构:…\tom\jiafei,⽽且主类的字节码⼀定放在此⽬录中。运⾏时,必须写主类的全名,即“包名.主类名”。
44. 如果⽤户需要类库中的类,就必须使⽤import语句。使⽤import语句可以引⼊包中的类和接⼝。在⼀个java源程序可以有多个import 语句,他们必须写在package语句和源⽂件中类的定义之间。
45. Java提供了130多个包,如:
java.lang:包含所有的基本语⾔类(系统⾃动引⽤);
javax.swing:包含抽象窗⼝⼯具集中的图形,⽂本;
java.io:包含所有的输⼊/输出类
java.util:包含使⽤类;
java.sql:包含操作数据库的类;
java:包含所有实现⽹络功能的类;
如果要引⽤⼀个包中的全部类,则可以⽤通配符(*)来替代,如:importjava.util.*;
如果不⽤import语句引⼊包中的类,也可以直接带着包名使⽤该类,如:java.util.Date date=new java.util.Date( );
46. 都是⽆包名⽽且在同⼀个⽂件夹下的类就可以互相使⽤,⽆包名类也可以使⽤import语句来使⽤有包名的类,但是有包名的类⽆论如何也⽆法使⽤⽆包名的类。
47. 访问限制修饰符有private,protected和public。类⽅法总是可以操作该类中的类变量,与访问限制符没有关系。
48. ⽤private修饰的成员变量和⽅法称为私有变量和私有⽅法。如果Tom类中的某个成员是私有类变量(静态成员变量),那么在另外⼀个类中,也不能通过Tom类名来操作这个私有类变量。如果Tom类中的某个⽅法是私有的类⽅法,那么在另外⼀个类中,也不能通过Tom 类名来调⽤这个私有的类⽅法。
49. ⽤public修饰的成员变量和⽅法被称为共有变量和共有⽅法。如果Tom类中的某个成员是public类变量,那么在另外⼀个类中,也可以通过类名Tom来操作Tom的这个类成员变量。
50. 不⽤private,public,protected修饰符修饰的成员变量和⽅法被称为友好变量和友好⽅法。如果⼀个类与Tom类在同⼀个包中,那么该对象能访问⾃⼰的友好变量和友好⽅法。如果源⽂件使⽤import语句引⼊了另外⼀个包中的类,并⽤该类创建了⼀个对象,那么该类的这个对象将不能访问⾃⼰的友好变量和友好⽅法。
51. ⽤protected修饰的成员变量和⽅法被称作受保护的成员变量和受保护的⽅法。任何⼀个与Tom在同⼀包中的类,也可以通过Tom类的类名访问Tom类的protected类变量和protected类⽅法。
52. 类声明时,如:public class A{}这样的类是⼀个public类,可以在任何另外⼀个类中使⽤public类创建对象。如果⼀个类不加public修饰,这样的类被称作友好类,那么另外⼀个类中使⽤友好类创建对象时,要保证他们是⼦啊同⼀个包⾥。
53. 不能⽤private和protected修饰类。
54. 访问限制修饰符按访问权限从⾼到低的排列顺序是public,protected,友好的,private。
55. Java提供了与基本数据类型相关的类,实现了对基本数据类型的封装。这些类在java.lang包中,分别是
Byte,Integer,Short,Long,Float,Double和Character。
56. Double类和Float类实现了对double和float基本数据类型的类包装。构造⽅法Double(doublenum),Double对象调
⽤doubleValue()⽅法可以返回该对象含有的double型数据;其他类型Float,Byte,Short,Integer,Long与double型⼀样。
57. 可以使⽤Character类的构造⽅法Character(char c)创建⼀个Charater类型的对象。Character对象调⽤cahrValue()⽅法可以返回该对象含有的char型数据。
58. 如果⼀个类中有多个对象,则使⽤对象数组,即数组的元素是对象。如:
Student [] stu;
Stu =new Student[10];
还要创建数组所包含的对象,如:stu[i]=new Student;
59. java运⾏环境提供了扩展(\jre\lib\ext),只要将类打包为jar格式⽂件,放⼊扩展中,程序就可以使⽤import语句使⽤扩展中的类了。
60. 使⽤jdk提供的可以制作源⽂件类结构的html格式⽂档。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论