一、封装概述
二、private关键字的用法
案例:private修饰成员变量
Student部分的代码
package cn.itcast.demo2;
/*
定义一个学生类
*/
public class Student {
//成员变量
//姓名
String name; //成员变量
//年龄
private int age; //被修饰的成员只能在本类中访问
//提供公共的访问方式,分别设置值,获取值
//设置age的值
public void setAge(int a) {
//在这里对age的值进行限定
//虽然可以限定,但其实不必要限定age的值
//因为从前端传过来的值已经经过了校验
/*if(a > 200 || a <= 0) {
//非法值
age = 1;
} else {
//合法值
age = a;
}*/
age = a;
}
//获取age的值
public int getAge() {
return age;
}
public void study() {
String name = "小黑";//局部变量
System.out.println(name+"正在学习...");
}
}
TestStudent部分的代码
package cn.itcast.demo2;
/*
学生类的测试类
*/
public class TestStudent {
public static void main(String[] args) {
Student stu = new Student();
//给他的年龄赋值为23
/*stu.age = 23;*/
//调用
//设置值
stu.setAge(23);
//获取值
System.out.println(stu.getAge());
}
}
输出结果:
三、this关键字的用法
案例:使用this来优化set方法
Student部分代码:
package cn.itcast.demo2;
/*
定义一个学生类
*/
public class Student {
//成员变量
//年龄
private int age = 20; //被修饰的成员只能在本类中访问
//提供公共的访问方式,分别设置值,获取值
//设置年龄
public void setAge(int age) {
this.age = age; //this可以用来解决成员变量和局部变量重名的的问题
}
//获取年龄
public int getAge() {
return age;
}
//为了更好理解this的作用,先做一个测试
public void show() {
//局部变量
int age = 10;
System.out.println(age);
System.out.println(this.age);
}
}
TestStudent部分代码:
package cn.itcast.demo2;
/*
学生类的测试类
*/
public class TestStudent {
public static void main(String[] args) {
//需求1:调用show方法
Student stu = new Student();
stu.show();
System.out.println("-------");
//需求2:按照格式,优化setAge()中的参数名,并调用
//设置年龄
stu.setAge(50);
//获取年龄
System.out.println(stu.getAge());
}
}
输出结果:
四、构造方法及演示
Student部分代码
package cn.itcast.demo2;
/*
定义一个学生类
*/
public class Student {
//构造方法
//无参构造
public Student() {}
//带参构造
public Student(String name,int age) {
this.name = name;
this.age = age;
}
//成员变量
private String name;
private int age = 20;
//设置名字
public void setName(String name) {
this.name = name;
}
//获取名字
public String getName() {
return name;
}
//设置年龄
public void setAge(int age) {
this.age = age; //this可以用来解决成员变量和局部变量重名的的问题
}
//获取年龄
public int getAge() {
return age;
}
}
TestStudent部分代码
package cn.itcast.demo2;
/*
学生类的测试类
*/
public class TestStudent {
public static void main(String[] args) {
//需求1:定义一个姓名叫张三,年龄为20的学生
//格式一:通过无参构造实现
Student stu = new Student();
stu.setName("张三");
stu.setAge(20);
System.out.println(stu.getName());
System.out.println(stu.getAge());
System.out.println("----------");
//格式二:通过构造方法实现快速初始化
/*Student stu2 = new Student();//调用的是无参构造*/
Student stu2 = new Student("李四",20);
System.out.println(stu2.getName());
System.out.println(stu2.getAge());
}
}
输出结果:
五、标准的JavaBean类的定义和使用
例:定义一个标准的JavaBean类并使用
Student部分代码
package cn.itcast.demo2;
/*
定义一个标准的JavaBean类
*/
public class Student {
//成员变量
//姓名
private String name;
//年龄
private int age;
//构造方法
//无参构造
public Student() {}
//带参构造
public Student(String name,int age) {
this.name = name;
this.age = age;
}
//公共的访问方式:setXxx(),getXxx();
//设置名字
public void setName(String name) {
this.name = name;
}
//获取名字
public String getName() {
return name;
}
//设置年龄
public void setAge(int age) {
this.age = age; //this可以用来解决成员变量和局部变量重名的的问题
}
//获取年龄
public int getAge() {
return age;
}
}
TestStudent部分代码:
package cn.itcast.demo2;
/*
学生类的测试类
*/
public class TestStudent {
public static void main(String[] args) {
//需求:通过空参创建对象
Student stu1 = new Student();
stu1.setName("张三");
stu1.setAge(20);
System.out.println(stu1.getName());
System.out.println(stu1.getAge());
System.out.println("-------------");
//通过全参创建对象
Student stu2 = new Student("李四",23);
System.out.println(stu2.getName());
System.out.println(stu2.getAge());
}
}
输出结果: