封装
封装:封装就是如何正确实际对象的属性和方法
封装的原则:对象代表什么,就得封装相应的数据,并提供数据相应的行为
简单理解封装思想:找对象,调方法
private关键字
private是一种权限修饰符,可以修饰成员方法和成员变量。
特点:被private修饰的成员只能在本类中被访问
被private修饰的成员变量,如果要被其他类使用,就需要提供相应的getter,Setter方法
setXxx()方法用于给变量赋值,getXxx()方法用于获取成员变量的值,均用public修饰
注意:当成员变量和局部变量重名时,会触发就近原则,如果要使用成员变量,则需要使用this关键字来修饰;
public class Worker {
//成员变量
private String name;
private int year;
//构造方法
public Worker(){}
public Worker(String name, int year) {
this.name = name;
this.year = year;
}
//获取name的属性值
public String getName() {
return name;
}
//给name赋值
public void setName(String name) {
this.name = name;
}
//获取year的属性值
public int getYear() {
return year;
}
//给year赋值
public void setYear(int year) {
this.year = year;
}
//打印信息
public void printInformation(){
System.out.println("该工人的信息如下:");
System.out.println("姓名:"+getName());
System.out.println("年龄:"+getYear());
}
}
构造方法
构造方法也叫构造器,构造函数
作用:在创建对象时给成员变量进行初始化(赋值)
特点:修饰符 类名(参数){方法体}
构造方法名与类名相同,大小写也要一致
构造方法没有返回值,void也没有
构造方法没有具体的返回值(不能由return带回结果数据)
//构造方法
//无参构造方法
public Worker(){}
//带参构造方法
public Worker(String name, int year) {
this.name = name;
this.year = year;
}
构造方法的执行机制:
创建对象的时候狗杂方法由虚拟机调用,不能手动调用构造方法
每创建一次对象,就会低欧勇一次构造方法
如果我们没有写构造方法,那么虚拟机会给我们加一个空参构造方法。
标准类的制作
成员变量
使用private修饰
构造方法
提供一个无参构造方法
提供一个带多个参数的构造方法
成员方法
提供每一个成员变量对应的getXxx()/setXxx()
提供一个显示对象信息的show()
如下所示
public class Worker {
//成员变量
private String name;
private int year;
//构造方法
public Worker(){}
public Worker(String name, int year) {
this.name = name;
this.year = year;
}
//获取name的属性值
public String getName() {
return name;
}
//给name赋值
public void setName(String name) {
this.name = name;
}
//获取year的属性值
public int getYear() {
return year;
}
//给year赋值
public void setYear(int year) {
this.year = year;
}
//打印信息
public void printInformation(){
System.out.println("该工人的信息如下:");
System.out.println("姓名:"+getName());
System.out.println("年龄:"+getYear());
}
}
测试类
创建对象并为其成员变量赋值
为成员变量赋值的两种方式
无参构造方法:用setXxx()进行赋值
带参构造方法直接创建带有属性值的对象
代码如下:
package com.work1.example1;
// 在测试类中,请查看键盘录入Scanner类的API,创建工人类对象,属性值由键盘录入,打印对象的属性值。输出效果如下:
import java.util.Scanner;
public class WorkerTest {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入工人的姓名:");
String name=sc.nextLine();
System.out.println("请输入工人的年纪:");
int age=sc.nextInt();
//使用带参构造方法
// Worker worker =new Worker(name,age);
// worker.printInformation();
//使用无参构造方法
Worker worker1=new Worker();
worker1.setName(name);
worker1.setYear(age);
worker1.printInformation();
}
}