Java类及其他知识点
类 对象 包
OO:面向对象
OOP:面向对象编程
OOA:面向对象分析
OOD:面向对象设计
面向对象: 围绕的是我这个软件是由哪些部分完成的,或者说是有哪些对象来做的.
面向过程: 我要解决问题,我要做哪些事情,他的完成流程是怎样的,就问题解决问题.
1.找对象:对象可以是问题域中出现的任何人/事物或者实体,简单点说就是"东西"
2.在已经找到问题域中的对象后,我们就要编写一个雷来描述每个对象的属性和行为.
3.属性是指对象身上有什么值数据.
行为是对象可以做什么,或者我们想这些对象做什么.
万物皆对象,对象因关注而产生.
类是对象的抽象,对象是类的实例
类是具有相同属性和行为的一组对象的集合
在软件系统中,我们用类来模拟现实生活中的实体
定义个了一个学生类(student):
类是由属性和行为组成.
文件名必须与公用名类名相同
final 命名常量,全部大写
属性是类身上的值数据,其形式就是变量属性和常量属性
变量属性: 声明语法采用的是变量的语法,只是比之前的普通变量多一个访问修饰符
在效果上,该类所有的对象都会自己动具备该属性,但是各个对象可以有各自不同的值
常量属性: 声明语法采用的是常量的语法,也只是多了访问修饰符
在效果上该类所有的对象都会自动具备该属性,只是值都一样,且不能更改.
定义类的本质就是定义一种数据类型.
类可以是一种比基本数据类型复杂得多的数据类型,他由属性和行为组成,
属性可以是多个,而且各有各的数据类型.
行为是类自带的方法,可以直接完成各种属于该类的对象的操作.
Public class TestStudent{
public static void main(String[]args){}
Student stu = new Student();
数据类型 变量名 = 产生对象的语法,试用new关键字,后面跟上类名()
属性的默认初始值: 基本数据类型为0,引用数据类型为null.
Student stu 只会在内存一个4字节的变量
这个变量存放即将要只想真正的的Student对象的引用 又名为"对象名空间"
new student()--这才会产生一个新的Student对象,该对象具备一个整体空间存放各个属性,此空间的大小由对象身上的属性的大小总和决定.
类和对象的关系:
类是模板,不能直接使用,对象才是具体的实际存在的.所以对象又被称之为某个类的"实例".通过类产生对象的动作被称之为"实例化".
操作对象的属性和方法:
对象加"."操作符
"."操作符在理解的时候把它理解成"的"字
stu的name → stu.name
stu的age→ stu.aga
对象的销毁是由Java中的垃圾回收机制(GC)来完成的.
他有其自身的算法规则,程序猿是没有办法控制改变它的
在垃圾回收的众多算法中有一条基本规则:他会主动回收没有引用指向的对象
所以:
1.如果想让某个对象在程序途中被回收,那么我们可以主动的把它的指向的引用赋值为null.
2.空指针异常:企图调用一个空对象的属性和方法,
3.如果对象的引用变量时(对象名空间)是个局部变量,那么当它所属的模块执行结束,这个变量的生命周期就到头了,变量会消失.那么它所指向的对象也就没有引用指向,也会被回收.
4.程序猿在代码级别只有一句代码可以和垃圾回收之间产生交集,这句代码是System.gc();
注意:这句代码的作用不是主动调用垃圾回收,而是召唤垃圾回收,但是垃圾处理器会由他自己的算法决定.
访问修饰符一共三个关键字,四种情况
现在我们只掌握两种public(公共的),private(私有的)
public 修饰的属性或者方法 可以在任意位置访问
private 修饰的属性或方法,可以在本类中访问
变量属性基于Java的官方规范,应该定义为private,然后提供get/set方法,让外部操作.取值或者赋值.
get方法被称之为:访问器
set方法被称之为:修改器
两者在格式和命名上,都有标准规范.
当全局变量和局部变量重名的时候,会默认使用局部变量
在这种情况下,要特指全局变量(当前类的对象),需要在全局变量前面+"this."操作
此时的this相当于生活中每个对象说的"我",指的是当前对象.
建议:凡是访问本类中当前对象的属性和行为时,都养成写this.的习惯
好处: 在开发中,this,会有提示,可以提高开发效率.
不用考虑什么时候加list,什么时候不加