马 士兵J2SE第 三章面 向对象编 程个人学习笔记Word格式文档下载.docx
- 文档编号:22462891
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:61
- 大小:1.83MB
马 士兵J2SE第 三章面 向对象编 程个人学习笔记Word格式文档下载.docx
《马 士兵J2SE第 三章面 向对象编 程个人学习笔记Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《马 士兵J2SE第 三章面 向对象编 程个人学习笔记Word格式文档下载.docx(61页珍藏版)》请在冰豆网上搜索。
name>
([<
argu_list>
]){
statements>
]
}
例如:
publicintgetAge(){returnage;
publicclassPerson{
intid;
intage=20;
voidPerson(int_id,int_age){
id=_id;
age=_age;
}
publicstaticvoidmain(String[]args){
Persontom=newPerson();
tom.Person(1,25);
//Personjerry=newPerson();
Pointp=newPoint();
classPoint{
Point(){}
intx;
inty;
六、成员变量成员变量可以使用java语言中任何一种数据类型(包括基本类型和引用类型),作用范围为整个类体
注意:
局部变量必须赋初试值才可以使用
成员变量不用初始化,java系统会给你赋初始值
Byte,short,int----->
Long----->
0L
char----->
’\u0000’
float----->
0.0F
double----->
0.0D
bloolean----->
false
所有引用类型----->
Null
七、引用类型(C中的指针,占两块内存)
除了java语言中基本类型以外的变量类型
Java中的对象是通过引用对其操作的内存值
/*声明string类型的引用变量,但是没使它指向一个对象*/
Stringsnull
/*使用new语句创建一个String类型的对象并
用S指向它,以后可以通过S完成对其的操作*/
S=newString(“helloworld!
”);
0X3a123b
如何在内存中区分类和对象?
类是静态的概念,代码区
独享是new出来的,位于堆内存,类的每个成员变量在不同的对象中都有不同的值(除了静态变量)
而方法只有一份,执行的时候才占用内存
八、对象的创建和使用
1.必须使用new关键字创建对象
2.使用:
对象(引用).队员变量来引用对象的成员变量
3.使用:
对象(引用).方法(参数列表)来调用对象的方法
4.同一对象的每个对象有不同的成员变变量存储空间
5.同一类的每个对象共享该类的方法
九、Java的方法定义
Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,声明格式为:
[修饰符1修饰符2…..]返回值类型方法名(形式参数列表){
Java语句;
………
语法解释:
1.形式参数:
在方法被调用时用于接收外界输入的数据。
2.实参:
调用方法时实际传给方法的数据。
3.返回值:
方法在执行完毕后返回给调用它的环境的数据。
4.返回值类型:
事先约定的返回值的数据类型,无返回值,必须给出返回类型viod。
A.Java语言中使用下述形式调用方法:
对象名.方法名(实参列表)
B.实参的数目、数据类型和次序必须和所调用方法声明的形式列表匹配。
C.return语句中止方法的运行并指定要返回的数据。
Java中进行函数调用中传递参数时,遵循传递的原则:
基本类型传递的是该数据本身,引用类型传递的是对象的引用,不是对象本身
一十、类和对象关系(内存中)
03_JAVA中的面向对象与内存解析_1.avi04_JAVA中的面向对象与内存解析_2.avi
一十一、构造函数2009-12-913:
44
04_JAVA中的面向对象与内存解析_2.avi
构造函数是定义在java类中的一个用来初始化对象的函数
1.构造函数名字与类的名字相同,大小写也保持一致
2.使用new+构造方法创建一个新的对象
3.构造函数与类同名切没有返回值。
即便是void也不能写
4.注意:
当无指定构造函数时,编译器为类自动添加形为:
类名(){}的构造方法
Person类的构造函数
publicclassPerson{
intid;
intage=20;
Person(int_id,int_age){
Id=_id
Age=_age;
Publicstaticvoidmain(String[]agrs){
Persontom=newPerson(1,25);
Personjrry=newPerson(1,27);
内存详细过程详解:
一十二、约定俗成的命名规则
类名的首字母大写
变量名和方法名的首字母小写
运用驼峰标示
一十三、内存分析过程
视频:
J2SE_5.0_第03章_面向对象06_内存解析_1.avi07_内存解析_2.avi
源码:
TestBirthdate\Test.java
classBirthDate{
privateintday;
privateintmonth;
privateintyear;
publicBirthDate(intd,intm,inty){
day=d;
month=m;
year=y;
publicvoidsetDay(intd){
day=d;
}
publicvoidsetMonth(intm){
month=m;
publicvoidsetYear(inty){
year=y;
publicintgetDay(){
returnday;
publicintgetMonth(){
returnmonth;
publicintgetYear(){
returnyear;
publicvoiddisplay(){
System.out.println
(day+"
-"
+month+"
+year);
publicclassTest{
publicstaticvoidmain(Stringargs[]){
Testtest=newTest();
intdate=9;
BirthDated1=newBirthDate(7,7,1970);
BirthDated2=newBirthDate(1,1,2000);
test.change1(date);
test.change2(d1);
test.change3(d2);
System.out.println("
date="
+date);
d1.display();
d2.display();
publicvoidchange1(inti){
i=1234;
publicvoidchange2(BirthDateb){
b=newBirthDate(22,2,2004);
publicvoidchange3(BirthDateb){
b.setDay(22);
调用过程演示
(1)
调用过程演示
(2)
调用过程演示(3)
调用过程演示(4)
调用过程演示(5)
调用过程演示(6)
调用过程演示(7)
调用过程演示(8)
调用过程演示(9)
调用过程演示(10)
08_内存解析_3.avi
练习:
视频:
09_练习.avi10_答案.avi11_内存解析.avi
TestPoint\TestPoint.java
doublex,y,z;
Point(double_x,double_y,double_z){
x=_x;
y=_y;
z=_z;
voidsetX(double_x){
doublegetDistance(Pointp){
return(x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z);
}
publicclassTestPoint{
Pointp=newPoint(1.0,2.0,3.0);
Pointp1=newPoint(0.0,0.0,0.0);
System.out.println(p.getDistance(p1));
p.setX(5.0);
System.out.println(p.getDistance(newPoint(1.0,1.0,1.0)));
内存调用过程见视频
2009-12-919:
43:
33
一十四、方法重载OverLoad2009-12-1110:
45:
05
方法的重载指一个类中可以定义有相同的名字,但参数个数不同和参数类型不同的多个方法。
调用时会根据不同的参数表选择对应方法
能被编译器区分的方法既是构成重载构造函数(方法)也可以重载见二十三、继承中的构造方法P20
方法重载可以改变返回值的类型。
(不知道为什么2009-12-1221:
24:
11)
例子112_方法重载与内存解析.avi
TestOverLoad.java
publicclassTestOverLoad{
Personp=newPerson();
Personp1=newPerson(400);
Personp2=newPerson(2,500);
p.info();
p.info("
ok"
);
classPerson{
//定义三个灵活的方法
Person(){
id=0;
age=20;
Person(int_id){
age=23;
Person(int_id,int_age){
//成员变量定义
privateintid;
privateintage=20;
//方法定义
publicintgetAge(){returnage;
publicvoidsetAge(inti){age=i;
publicintgetId(){returnid;
voidinfo(){
System.out.println("
myidis:
"
+id);
voidinfo(Stringt){
System.out.println(t+"
id"
例子212_方法重载与内存解析.avi
TestOverload\test.java
publicclassTest{
voidmax(inta,intb){
System.out.println(a>
b?
a:
b);
}参数类型不同,可以被
编译器识别
voidmax(shorta,shortb){
short"
}
voidmax(floata,floatb){
参数返回类型不同,构
}成重名不能被编译器
识别
intmax(floata,floatb){
Testt=newTest();
t.max(3,4);
shorta=3;
shortb=4;
t.max(a,b);
一十五、对象创建与使用_复习与练习
源码:
TestCircle.java视频:
14_TestCircle程序分析_1.avi15_TestCircle程序分析_2.avi16_TestCircle程序分析_3.avi
privatedoublex;
privatedoubley;
Point(doublex1,doubley1){
x=x1;
y=y1;
publicdoublegetX(){returnx;
publicdoublegetY(){returny;
publicvoidsetX(doublei){x=i;
publicvoidsetY(doublei){y=i;
//
classCircle{
privatePointo;
privatedoubleradius;
Circle(Pointp,doubler){
o=p;
radius=r;
Circle(doubler){
o=newPoint(0.0,0.0);
radius=r;
booleancontains(Pointp){
doublex=p.getX()-o.getX();
doubley=p.getY()-o.getY();
if(x*x+y*y>
radius*radius)returnfalse;
elsereturntrue;
publicvoidsetO(doublex,doubley){
o.setX(x);
o.setY(y);
publicPointgetO(){returno;
publicdoublegetRadius(){returnradius;
publicvoidsetRadius(doubler){radius=r;
publicdoublearea(){
return3.14*radius*radius;
publicclassTestCircle{
publicstaticvoidmain(Stringargs[]){
Circlec1=newCircle(newPoint(1.0,2.0),2.0);
Circlec2=newCircle(5.0);
c1:
("
+c1.getO().getX()+"
"
+c1.getO().getY()+"
),"
+c1.getRadius());
c2:
+c2.getO().getX()
+"
+c2.getO().getY()+"
+c2.getRadius());
c1area="
+c1.area());
+c2.area());
c1.setO(5,6);
c2.setRadius(9.0);
+c2.getO().getX()+"
+c2.getO().getY()+"
Pointp1=newPoint(5.2,6.3);
System.out.println(c1.contains(p1));
System.out.println(c1.contains(newPoint(10.0,9.0)));
一十六、this关键字
定义:
在类的方法定义中使用this关键字代表使用该方法的对象引用
使用this(argument_list)调用本类的另外的构造方法
使用this.xxx=xxx获取本类另外一个构造方法传来的值
构造函数和一般成员函数在继承中的区别的练习
使用:
当必须指出当前使用方法的对象是谁时要使用this
有时使用this可以处理方法中成员变量和参数重名情况
this可以看做一变量,它的值是当前对象引用
publicclassLeaf{
inti=0;
leaf(inti){this.i=i;
leafincreament(){
i++;
returnthis;
voidprint(){System.ot.println(“i=”+I);
publicstaticvoidmain(String[]args){
Leafleaf=newLeaf(100);
Leaf.increament().increament().print();
一十七、Static关键字
1.在类中,使用是static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对该类的所有对象来说,static成员变量只有一份。
2.用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
-----静态方法不再是针对某个对象调用,所以不能访问非静态成员
3.可以通过对象引用或者类名(不需实例化)访问静态成员。
4.我觉得就是在使用内部类时使用,如果不需要内部类队形想与其外围类之间有联系,那么可以将内部类声明为static,这通常叫嵌套类.
嵌套类意味着:
1要创建嵌套类的对象,并不需要其外围类的对象.
2不能从嵌套类的对象中访问非静态类的外围类对象!
5.例子源码:
Cat.java视频:
18_static关键字_1.avi19_static_关键字_2.avi
publicclassCat{
privatestaticintsid=0;
privateStringname;
Cat(Stringname){
this.name=name;
id=sid++;
publicvoidinfo(){
System.out.println
("
Mynameis"
+name+"
No."
+id);
publicstaticvoidmain(Stringarg[]){
Cat.sid=100;
Catmimi=newCat("
mimi"
mimi.sid=2000;
Catpipi=newCat("
pipi"
mimi.info();
pipi.info();
一十八、package和import2009-12-1115:
00:
21
1.java引入包(package)机制提供类的多重类命名空间。
2.package语句作为java源文件第一句,指明该文件定义的类所在包。
packagepkg1[.pkg2[.pkg3….]];
约定俗
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 士兵J2SE第 三章面 向对象编 程个人学习笔记 士兵 J2SE 对象 个人 学习 笔记