1、如何用java语言描述现实世界的事物呢?
举例:人
五官,姓名,年龄,性别....
吃饭,学习,说话....
水杯:
颜色,材质,形状,容积...
装水,泡茶...
属性:用于描述事物的信息
行为:用来描述事物能够做什么的
我们学习编程语言,目的其实用来描述现实世界的事物
而我们现在所学的语言:java
现在就要开始学习如何用java来描述一个现实世界的事物
首先,我们知道java的最基本的单位是:类
所以我们应该通过java中的类去描述现实世界的事物
按照我们分析现实事物的角度出发得到一个与java中类的对应关系
现实事物:
属性:用于描述事物的信息
行为:用来描述事物能够做什么的
类:
成员变量:用于描述事物的信息
定义一个成员变量:
1、定义的位置:再类中方法外
2定义的格式:数据类型 变量名;
成员变量与局部变量的区别:
1、在类中定义的位置不同
成员变量:在类中、方法外;
局部变量:在方法内定义
2、在内存中的位置不同
成员变量:在堆内存中
局部变量:在栈内存中
3、初始化值也不相同
成员变量:系统根据不同的数据类型赋予不同的初始值(int short byte long:0;float double:0.0;String :null;boolean:false; 引用数据类型:null; char:/#0000)
局部变量:系统不会自动赋值,在使用之前必须手动赋值,斗则不能使用;
4、生命周期不同
成员变量:随着对象的创建而创建,随着对象的消失而消失;
局部变量:随着方法的调用而创建,随着方法的调用完毕而消失;
注意事项:
1、局部变量的名字可以和成员变量的一样,在方法内部用到这个变量的时候,采用就近原则,首先先到
方法的内部去找,若找不到再去成员变量中查找;
2、方法之间的局部变量不能相互调用;
获取成员变量的方法:
1、提供一个单个公共的方法去获取所有的变量值;
2、单个使用共公共的方法,一个一个的获取打印(开发使用),原因:单个使用比一起使用灵活度较高
private:
1、被private修饰的变量只能在本类中使用;
2、可以修饰成员(成员变量和成员方法);
3、作用
1)通过对象给成员变量赋值的时候,可以赋值一些非法的数据,private可以保证在赋值之前
先做一次判断,数据校验,依旧是对即将赋值的数据做出判断;
2)规定了调用成员变量赋值必须使用我们给的public修饰的方法进行赋值;
成员方法:用来描述事物能够做什么的
定义一个方法:
1、定义的位置:再类中;
2、定义的格式:
修饰符 返回值类型 方法名(参数列表){
方法体;
}
类:是一组成员变量和成员方法的集合,可以把类看作一个抽象的概念
在一个java文件可以定义多个类,我们这里,就先定义基本的类,和测试类将来编译的时候,
JVM会读取java文件,有多少个class类,就编译生成多少个.class文件
注意:一个java文件中只能有一个class文件被public修饰,记住被public修饰的类名规范是要与java文件名
一致
在测试类中如何使用类的?
答:创建该类的对象去使用;
创建类的对象的格式:
类名 对象名 = new 类名();
形式参数的问题:
1、当形式参数是基本数据类型的时候,将来要调用时传入的参数是常量值,或者是该类型的变量;
2、当形式参数是引用数据类型的时候,将来调用方法时传入的是该类对象的地址值;
3、当形式参数是基本数据类型的时候,在方法中对变量作修改,不会影响到外部实际的栈中的值;
4、当形式参数是引用数据类型的时候,在方法中对变量作修改,会影响到外部实际的堆内存中的值;
对象:是该类的具体的表现,具体到一个个体
匿名对象:就是没有名字的对象
匿名对象的使用场景:
1、调用方法的时候,当调用一次的时候,可以使用匿名对象
注意:当调用多次方法的时候,就不适合使用匿名对象,每次new的时候都是一个新的匿名对象
会频繁在堆内存中开辟空间;
当匿名对象使用完毕之后,无法使用第二次,就会变成一个垃圾,等待被垃圾回收器回收
2、当方法的参数是一个类的时候,可以使用匿名对象的调用方法;
举例:
事物:人
属性:姓名,性别,年龄...
行为:吃饭,睡觉,学习...
类:Person
成员变量:name,gender,age
成员方法:eat(),sleep(),study()
对象:是该类的具体的表现,具体到一个个体
学生,老师,医生,律师,程序员
封装:其实就是隐藏对象的属性和相关的实现细节,仅仅对外提供公共的访问方式;
java中规范定义一个类的标准版本1.0:
1、将成员变量用private修饰;
2、提供公共的方法setXxx()和getXxx();
3、提供一个打印所有成员变量的方法
java中规范定义一个类的标准版本2.0:
1、成员变量被private修饰;
2、成员方法:setXxx()和getXxx(),其中setXxx()形参的名字与成员变量
的名字一致,使用this关键字赋值
(例如:this 成员变量名称 = 成员变量名称(这里指的是形参);