Java学习笔记
8.类与对象、封装、构造方法
标题基本定义模板
public class Phone{ //public类最多只能有一个
int money; //手机的两种属性
String color;
public void call(String name){ //成员方法不要写static关键字
System.out.printf("给" + name + "打电话"); //一种行为(功能)
}
}
注意:public类最多只能有一个,public类的名称也必须完全与含有该编译单元的文件名完全一致。如果不一致,会导致将编译错误。
例如public class xxx对应的就是 xxx.java文件
一般public对应的类用来存放main方法,而新建的类不能与main方法在同一个类中,所以一般新建的类都是不带public,并且不在public类中,示例如下
通常情况下,一个类并不能直接使用,
需要根据类创建一个对象,才能使用。
标题分以下3步:
- 导包:也就是指出需要使用的类,在什么位置。
import 包名称.类名称;
对于和当前类属于同一个包的情况,可以省略导包语句不写。 - 创建,格式:类名称 对象名 = new 类名称();
Student stu = new Student(); - 使用,分为两种情况:
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名(参数)
标题成员变量与局部变量的区别
1.定义的位置不同
成员变量:类中,方法外
局部变量:方法中或者方法声明上(形式参数)
2.作用范围不同
成员变量:类中
局部变量:方法中
3. 初始化值的不同
成员变量:有默认值
局部变量:没有默认值。必须先定义,赋值,最后使用
4.在内存中的位置不同
成员变量:堆内存
局部变量:栈内存
5.生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
封装:
将一些细节信息隐藏起来,对于外界不可见
封装性在Java当中的体现:
1. 方法就是一种封装
2. 关键字private也是一种封装
用private关键字将需要保护的成员变量进行修饰。
一旦使用了private进行修饰,那么本类当中仍然可以随意访问。
但是,超出了本类范围之外就不能再直接访问了。
间接访问private成员变量,就是定义一对Getter/Setter方法
必须叫setXxx或者是getXxx命名规则。
对于Getter来说,不能有参数,返回值类型和成员变量对应;
对于Setter来说,不能有返回值,参数类型和成员变量对应。
注意:对于基本类型当中的boolean值,
Getter方法一定要写成isXxx的形式,而setXxx规则不变
this关键字
当方法的局部变量和类的成员变量重名的时候,
根据“就近原则”,优先使用局部变量。
如果需要访问本类当中的成员变量
需要使用格式:this.成员变量名
“通过谁调用的方法,谁就是this。”
this.name就是Person成员变量中的name
最后输出的就是王思聪,你好。我是王健林
构造方法
构造方法是专门用来创建对象的方法
当我们通过关键字new来创建对象时,其实就是在调用构造方法。
格式:
public 类名称(参数类型 参数名称) {
方法体
}
注意事项:
- 构造方法的名称必须和所在的类名称完全一样,
就连大小写也要一样 - 构造方法不要写返回值类型,连void都不写
- 构造方法不能return一个具体的返回值
- 如果没有编写任何构造方法,那么编译器将会默认有一个构造方法,没有参数、方法体为空。public Student() {}
- 一旦编写了至少一个构造方法,那么编译器将无默认构造方法。
- 构造方法也是可以进行重载的。
重载:方法名称相同,参数列表不同。
标准的类(JavaBean)
一个标准的类通常要拥有下面四个组成部分:
- 所有的成员变量都要使用private关键字修饰
- 为每一个成员变量编写一对Getter/Setter方法
- 有无参数的构造方法
- public修饰的公共类