面向对象思想

一、面向对象的核心思想:分类

二、面向对象分析

例:给传智播客北京校区做一套系统,要求能记录学员信息,教师信息、员工信息、课程、班级、正在上课的班级

1、要明确系统中要记录那些信息

java基础班学员:学科、学号、姓名、性别、年龄

IOS班学员:学科、学号、姓名、性别、年龄

javaEE班学员:学科、学号、姓名、性别、年龄

……

java基础班讲师:编号、学科、姓名、性别、年龄

IOS讲师:编号、学科、姓名、性别、年龄、

javaEE讲师:编号、学科、姓名、性别、年龄

……

学前咨询的员工:

……

2、将上述信息进行分类,禀明企鹅每个类中的具体成员

2.1 学员类:

学科:

学号:

姓名:

性别:

年龄:

2.2 讲师类:

编号:

学科:

姓名:

性别:

年龄:

2.3 员工类:

……

3、面向对象开发:

 

三、类的定义

1、多个类可以定义到同一个.java文件中,但是一个.java文件中只能有一个public

2、类体中只能定义属性和行为,其他的语句都不能直接放在类体中

int a;

a = 10;

以上两条语句可以出现在方法中,但不能出现在类体中,即a只能作为局部变量被定义

3、属性:定义为成员变量,定义在类体中,存放在堆里面,成员变量可以自动初始化

4、行为:定义为成员方法,可以有返回值和形参,也可以没有

5、一个类生成一个.class文件

 

四、类的实例化

1、当我们实例化多个对象时,会在对空间为每个对象单独开辟一块空间,但内部值存储”成员变量的值;

2、方法被存储在方法区内,而且只有这一个空间,被多个对象共享。

3、多个对象会调用一个方法,虚拟机需要判断是哪个对象调用的,在调用时,有个“动态绑定”过程

4、如果在方法体内访问成员变量,通过一个隐式的关键字“this”来区分

 

五、成员变量与局部变量的比较

1、成员变量定义在类体中,可以是任何的java数据类型

      局部变量第一在方法中,可以是任何的java数据类型

2、区别:

1、定义的位置

成员变量:类体中

局部变量:方法中

2、内存中的位置

成员变量:堆中

局部变量(基本数据类型):栈中

3、生命周期

成员变量:实例化一个对象时,在堆中产生,如果没有任何引用来引用这块空间,后期由垃圾回收器不定期检查并回收

局部变量:当所在的作用域代码块被执行,变量产生空间;当变量所在的作用域代码块执行完毕,会被立即从栈中被清掉

4、初始化方式和初始化值:

成员变量:由java自动初始化

局部变量:必须手动初始化

 

六、匿名对象

1、没有名字的对象

new Student()

2、有些时候,我们在以下情况下,可以使用匿名对象的方式:
   2/1 类中的某个方法只需要调用一次

      2/2  如果某个方法需要“某个对象的引用”,也就是形参是某个对象的引用,如果我们调用方不需要这个,只需要给方法传递一个引用即可,这时可以使用匿名对象

你可能感兴趣的:(java,面向对象)