如鹏网JAVA培训笔记4晓伟整理Word格式.docx
- 文档编号:5787735
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:12
- 大小:1.03MB
如鹏网JAVA培训笔记4晓伟整理Word格式.docx
《如鹏网JAVA培训笔记4晓伟整理Word格式.docx》由会员分享,可在线阅读,更多相关《如鹏网JAVA培训笔记4晓伟整理Word格式.docx(12页珍藏版)》请在冰点文库上搜索。
类的定义:
1.最简单的类:
classPerson{
privateintage;
//成员变量
privateStringname;
publicvoidsetAge(int)
{
this.age=age;
}
publicvoidsetName(Stingname)
this.name=name;
publicvoidsayHello()
System.out.println(“大家好,我是”+name+“,我今年”+age+“岁了”);
};
2.一个java文件中只能定义一个public的class,且文件名必须和public类一样。
Personzxw=newPerson();
//创建一个Person类型的对象。
//Person类型的变量zxw,并且把zxw指向刚才创建的对象
zxw.setName("
张晓伟"
);
//调用zxw指向的对象的setName方法
zxw.setAge(18);
zxw.sysHello();
//创建另外一个类的对象
Personww=newPerson();
ww.setAge(23);
ww.setName("
旺旺"
ww.sysHello();
对象的实例化:
两个对象的内存分配:
根据模板拷贝两份。
(单独的内存)
new出的每一个对象都是一个单独的实例,两个对象之间的成员变量是独立的两份。
new出来的叫类对象或者实例(Instance)
类对象是引用传递:
1.复习:
inti=10;
intj=i;
i=20;
之后j是多少?
j=10;
而i变成了i=20;
(复制传递)
2.下面的程序呢?
Personweiren=zxw;
//weiren是zxw的引用,修改了weiren的内容,也实际上修改了zxw中的内容
weiren.setAge(22);
weiren.sayHello();
zxw.sayHello();
解释:
“Personweiren=zxw;
”weiren指向zxw当前所指向的对象。
由于zxw当前指向的是“张晓伟”,所以weiren也就指向了“张晓伟”
如果是:
zxw=ww;
结果是:
//weiren是zxw的引用
weiren.setAge(23);
weiren.setName("
zxwwangwang"
weiren.sysHello();
System.out.println("
\n"
//再次使用类对象的引用
zxw=ww;
//实现zxw是ww的引用
Personp1;
//是定义了Person的一个变量p1
但是未对p1进行初始化,p1是个变量,但是没有对象。
如果写成:
Personp1=null;
//p1不指向任何对象
p1.sysHello();
//会报错,出现异常
代码中的:
类对象是引用传递
//“weiren”变量指向“zxw当前所指向的对象”
区别于C++的引用:
weiren是一个独立的变量有自己的内存空间,而不是“zxw”变量的别名。
只是相当于这两个变量同时指向了同一块内存中的数据。
inti=10;
int*p1=&
i;
int*p2=&
intj=50;
p1=&
j;
*p1==(j=50);
而*p2==(i=10);
注:
1.只有new才会创建一个对象,有多少个new就创建了多少个类对象。
成员变量和局部变量:
publicvoidsetAge(intage)
1.局部变量必须初始化,成员变量声明时默认初始化,基本数值类型默认初始值为int、String等非基本类型初始化为null。
Why?
因为涉及到了栈内存和堆内存,以后讲。
2.当成员变量和局部变量(函数参数也可以看做局部变量)重名的时候,被看做局部变量,因此为了避免混乱,建议访问成员变量的时候加上“this.”,this代表当前对象。
3.newPerson().sayHello();
//创建一个匿名对象,然后调用。
根本没有用变量指向它,直接定义一个对象,通过对象调用sayHello()方法。
以上这种写法等价于:
Personp1=newPerson();
//创建一个新的对象,用p1变量指向新new出的Person对象
p1.sayHello();
//调用对象中的sayHello方法。
private和public:
1.我们可以把age成员变量声明为public,也可以把setAge声明为private,这样就只能在类内部调用private成员
结论:
public成员可以被类内部或者外部访问,private成员只能被类内部访问。
这样可以保护不希望外界调用的内部成员(Member,包含字段Field/变量、方法)不被外界访问。
2.直接通过public的age设置年龄,不通过setAge赋值。
3.字段(Field)/成员变量(MemberVariable)一般声明为private
构造函数:
1.构造函数是创建类对象,并且在创建完成前对类进行初始化的特殊函数。
如果定义类时没有声明构造函数,默认会给出一个无参构造函数,如果定义了任意一个构造函数,将不会提供默认的无参构造函数。
2.构造方法格式及特点:
①方法名必须和类名一致
②没有返回值类型
3.构造函数可以重载,Person(Stringname,intage)
4.用构造函数初始化和new之后通过set***初始化的区别:
语义,有的对象生来就要有一些成员变量被赋值的,否则就是怪胎。
有些属性是天生时设置的,不能后期set修改。
静态static:
1.一些场景下会要求一个类的多个实例共享一个成员变量;
有时候要定义“常量”,但是java没有提供常量;
有时候想定义一些不和具体对象关联、不需要new就调用的方法
2.例如:
GTK的GTK.GTK_WINDOW_TOPLEVEL、gtk_main
3.static方法不需要new就可以直接通过类名调用。
4.static变量不需要new就可以直接通过类名调用。
static变量是共享的内存空间,非static变量则是对象隔离的。
5.static方法中无法使用this关键字,因为static独立于对象存在,不是任何人的唯一。
6.static成员中只能访问static成员,不能直接访问非static成员。
非static成员可以访问static成员。
7.回顾之前写的GTK程序声明在最开始的都是static变量。
一个类的多个实例共享一个成员变量
多个对象之间共享一个变量,这时候就需要采用static
A(3)方法的第三行调用B()方法,B
(2)方法的第二行调用C()
方法,C(5)方法的第五行调用D(1,throw...)则D中throw之后的代码不会被执行;
C第5行之后的代码也不会执行了;
B第二行之后不会再被执行;
A第三行之后不会再被执行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如鹏网 JAVA 培训 笔记 整理