电脑开机画面-联想笔记本键盘驱动
2023年3月30日发(作者:poweriso)
类和对象学习总结
类与对象的学习总结
2019年10⽉22⽇
这⾥总结了现阶段我学习的JAVA⾥类与对象的相关知识
⼀.类和对象简单认识
是⾯向对象的语⾔解决较⼤问题
C是⾯向过程的语⾔
类是模板(建造房屋时的图纸)可以class⼀个类
对象是由模板创建的实体
(按照图纸建造出来的)可以new产⽣⼀个对象
2.举例:类:⼈
⾏为:吃饭睡觉
属性:年龄,性别
对象具有属性和⽅法
3.类似于⼀张图纸可以建造很多房屋,同时⼀个类可以产⽣很多对象
我们在使⽤JAVA语⾔开发时:找对象,创建对象,使⽤对象
⼆.类和类的实例化
例⼦建造房⼦时,图纸便是模板,按照图纸建造出来的房⼦就是模板
注意可以⽤⼀张图纸建造出很多房⼦,那么⼀个类可以对应很多的对象。
即⼀个类可以实例化⽆数个对象
类相当于模板,由这个模板产⽣很多的对象。
声明⼀个类就是创建⼀个新的数据类型,类在Java⾥属于引⽤类型
当你声明⼀个类时,可以⽤class
class为定义类的关键字,ClassName为类的名字,{}中为类的主体。
类中的元素称为:成员属性。类中的函数称为:成员⽅法。
1.类的实例化
注意事项:new关键字⽤于创建⼀个对象的实例.
使⽤.来访问对象中的属性和⽅法.
同⼀个类可以创建多个实例
类的实例化:⽤类类型创建对象的过程,称为类的实例化
a.类只是⼀个模型⼀样的东西,限定了类有哪些成员,定义出⼀个类并没有分配实际的内存空间来存储它
b.⼀个类可以实例化出多个对象,实例化出的对象占⽤实际的物理空间,存储类成员变量
c.做个⽐⽅。类实例化出对象就像现实中使⽤建筑设计图建造出房⼦,类就像是设计图,只设计出需要什么东
西,但是并没有实体的建筑存在,同样类也只是⼀个设计,实例化出的对象才能实际存储数据,占⽤物理空间
2.类的成员:字段,⽅法,代码块,内部类,接⼝
a.字段:在类中,但是⽅法外部定义的变量.⽤于描述⼀个类中包含哪些数据
classPerson{
publicStringname;//字段
publicintage;
}
注意事项:使⽤.访问对象的字段
“访问”既包含读,也包含写
对于⼀个对象的字段如果没有显式设置初始值,那么会被设置⼀个默认的初值
默认规则:
对于各种数字类型,默认值为0
对于boolean类型,默认值为false
对于引⽤类型(String,Array,以及⾃定制类),默认值为null
注意null空引⽤
b.⽅法method:⽤于描述⼀个对象的⾏为
构造⽅法:⽅法中还有⼀种特殊的⽅法称为构造⽅法(constructionmethod)
在实例化对象的时候会被⾃动调⽤到的⽅法,⽅法名字和类名相同,⽤于对象的初始化.
有些时候可能需要进⾏⼀些更复杂的初始化逻辑,那么就可以使⽤构造⽅法.
关键字
(1)、修饰属性:Java静态属性和类相关,和具体的实例⽆关.换句话说,同⼀个类的不同实例共⽤同⼀个静态属性
(2)、修饰⽅法
如果在任何⽅法上应⽤static,关键字,此⽅法称为静态⽅法。
静态⽅法属于类,⽽不属于类的对象。
可以直接调⽤静态⽅法,⽽⽆需创建类的实例。
静态⽅法可以访问静态数据成员,并可以更改静态数据成员的值。
注意事项:静态⽅法和实例⽆关,⽽是和类相关.因此这导致了两个情况
第⼀个:静态⽅法不能直接使⽤⾮静态数据成员或调⽤⾮静态⽅法(⾮静态数据成员和⽅法都是和实例相关的).
this和super两个关键字不能在静态上下⽂中使⽤(this是当前实例的引⽤,super是当前实例⽗类实例的引⽤,也是和当前实例相关).
第⼆个:我们曾经写的⽅法为了简单,都统⼀加上了static.但实际上⼀个⽅法具体要不要带static,都需要是情形⽽定.main⽅法为static⽅法.
5.封装
什么叫封装?
如果⼀个软件代码复杂程度太⾼,那么就⽆法继续维护.如何管理复杂程度?封装就是最基本的⽅法.
在我们写代码的时候经常会涉及两种⾓⾊:类的实现者和类的调⽤者.
封装的本质就是让类的调⽤者不必太多的了解类的实现者是如何实现类的,只要知道如何使⽤类就⾏了.这样可以降低类使⽤者的学习成本和
使⽤成本,降低了复杂度
e实现封装
使⽤private封装属性,并提供public⽅法供类的调⽤者使⽤
使⽤private来修饰.类的调⽤者(main⽅法中)不能直接使⽤.⽽需要借助show⽅法.此时类的使⽤者就不必了解Person类的实现细节
同时如果类的实现者修改了字段的名字,类的调⽤者不需要做出任何修改(类的调⽤者根本访问不到name,age这样的字段).
注意事项:
private不光能修饰字段,也能修饰⽅法
通常情况下我们会把字段设为private属性,但是⽅法是否需要设为public,就需要视具体情形⽽定.⼀般我们希望⼀个类只提供"必要的"public
⽅法,⽽不应该是把所有的⽅法都⽆脑设为public.
setter⽅法
需要获取或者修改这个private属性,就需要使⽤getter/setter⽅法
getter⽅法,表⽰获取这个成员的值.
setter⽅法,表⽰设置这个成员的值.
当set⽅法的形参名字和类中的成员属性的名字⼀样的时候,如果不使⽤this,相当于⾃赋值.this表⽰当前实例的引⽤.
不是所有的字段都⼀定要提供setter/getter⽅法,⽽是要根据实际情况决定提供哪种⽅法
在IDEA中可以使⽤alt+insert(或者alt+F12)快速⽣成setter/getter⽅法.在VSCode中可以使⽤⿏标右键菜单->源代码操作中⾃动⽣成
setter/getter⽅法
6.构造⽅法
a.构造⽅法:构造⽅法是⼀种特殊⽅法,使⽤关键字new实例化新对象时会被⾃动调⽤,⽤于完成初始化操作
语法规则:⽅法名称必须与类名称相同
构造⽅法没有返回值类型声明
每⼀个类中⼀定⾄少存在⼀个构造⽅法(没有明确定义,则系统⾃动⽣成⼀个⽆参构造)
注意事项:如果类中没有提供任何的构造函数,那么编译器会默认⽣成⼀个不带有参数的构造函数若类中定义了构造⽅法,则默认的⽆参
构造将不再⽣成.
构造⽅法⽀持重载.规则和普通⽅法的重载⼀致
关键字
this表⽰当前对象引⽤(注意不是当前对象).可以借助this来访问对象的字段和⽅法.
7.代码块
使⽤{}定义的⼀段代码.
根据代码块定义的位置以及关键字,⼜可分为以下四种:
普通代码块
构造块
静态块
同步代码块
a.普通代码块:定义在⽅法中的代码块
b.构造块:定义在类中的代码块(不加修饰符)。构造代码块⼀般⽤于初始化实例成员变量
实例代码块优先于构造函数执⾏
c.静态代码块:使⽤static定义的代码块
静态代码块不管⽣成多少个对象,其只会执⾏⼀次,且是最先执⾏的。
静态代码块执⾏完毕后,实例代码块(构造块)执⾏,再然后是构造函数执⾏
7.匿名对象
匿名只是表⽰没有名字的对象
没有引⽤的对象称为匿名对象
名对象只能在创建对象时使⽤
如果⼀个对象只是⽤⼀次,后⾯不需要⽤了,可以考虑使⽤匿名对象
更多推荐
对象不支持此属性或方法
发布评论