学习目标:
- 学会类的创建与使用
- 从不同角度理解局部变量与成员变量
- 学会面对对象三大特征的封装特征。
学习内容:
一、类的创建
```
public class Student {
// 定义成员变量
String name;
int age;
// 定义成员方法
public void sleep () {
System.out.println("睡觉觉!");
}
public void study () {
System.out.println("学习中!");
}
public void eat () {
System.out.println("吃饭饭!");
}
}
```
二、类的使用
1、导包
- import 包名称.类名称
- 对于和当前类属于同一文件夹中的类,不需要导入
2、创建,格式
- 类名称 对象名 = new 类名称();
3、使用
- 使用成员变量:对象名.成员变量名
- 如果成员变量没有进行赋值,那么将会有和数组一样的默认值
- 使用成员方法:对象名.成员方法名(参数)
三、局部变量和成员变量
1、定义的位置不一样
- 局部变量:在方法的内部
- 成员变量:在方法的外部,只能写在类中
2、作用范围不一样
- 局部变量:只有在方法中能够使用
- 成员变量:整个类中都可以使用
3、默认值不一样
- 局部变量:没有默认值,必须赋值
- 成员变量:有默认值,和数组规则一样
4、内存位置不一样
- 局部变量:位于栈内存
- 成员变量:位于堆内存
5、生命周期不一样
- 局部变量:随着方法进栈而诞生,随着方法出栈而消失
- 成员变量:随着对象被创建而诞生,随着对象被回收而消失
PS:
- 方法的参数是局部变量,调用方法时必定被赋值
四、面向对象的三大特征
1、封装
- 方法就是一种封装
- 关键字private也是一种封装
- private关键字的使用
- 成员变量加上private关键字的时候,在定义类的外部就不能直接进行访问,需要在定义类时用set,get方法间接进行访问
- 当成员变量为布尔类型时,set方法不变,get方法变成isXxx方法
- this的使用:
- 当局部变量名与成员变量名重复时,将成员变量名变成
this.成员变量名
- 当局部变量名与成员变量名重复时,将成员变量名变成
- 构造方法
- 构造方法是专门用来创建对象的方法
- 构造方法必须与所在的类名完全一样
- 构造方法不用写返回值类型,连void都不写
- 构造方法不能返回一个具体的返回值
- 如果没有编写构造方法,编译器会默认创建一个什么都不做的构造方法。
- 构造方法也可以重载
- 构造方法格式
public 类名(参数类型 参数名) { 构造函数体; }
学习产出:
1、Person类的创建
package mypackage.day02.demo1;
public class Person {
public String name;
private int age;
public void show() {
System.out.println("我叫"+name+", 今年"+age+"岁。");
}
public void setAge(int num) {
if (num < 0 || num >100 ) {
System.out.println("输入了错误的年龄!!!");
} else {
age = num;
};
}
public int getAge() {
return age;
}
}
2、Student类的创建
package mypackage.day02.demo1;
//java bean
public class Student {
//成员变量
private String name;
private int age;
//无参数构造函数
public Student() {
}
//全参数构造函数
public Student(String name, int age) {
this.name = name;
this.age = age;
}
//getter与setter函数
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
3、创建对象
package mypackage.day02.demo2;
import mypackage.day02.demo1.Person;
public class DemoPerson {
public static void main(String[] args) {
Person one = new Person();
one.name = "Jim";
one.setAge(-20);
one.setAge(20);
System.out.println(one.getAge());
one.show();
}
}