封装原则:将类的某些信息隐藏在类内部,不允许外部程序【直接】访问,而是通过该类提供的方法来细实线对隐藏信息的操作和访问。
封装的好处:1、通过方法来控制成员变量的操作,提高代码安全性;2、把代码用方法进行封装——复用性
package com.javabase;
/*
成员变量:使用 private修饰
构造方法:(系统默认为每个没有手写带参构造方法的类,自动隐式提供一个无参构造方法
但是如果手写了,系统不再自动提供无参构造方法)
(构造方法名要与类名完全相同)
1、提供一个无参构造方法——建议养成习惯每次都写上
2、提供一个带多个参数的构造方法
成员方法:提供get/set方法
提供一个显示对象信息的show()
*/
public class Solution {
//定义两个成员变量,注意String大写,int小写
//成员变量有默认初始值,存在堆中
private String name;
private int age;
//定义构造方法,注意修饰符和方法名
//这两个构造方法用到了方法的重载(Overloading):方法重载是让类以统一的方式处理不同类型数据的一种手段。
// 调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法,这就是多态性。
// 重载须注意2点:同一个类中、必须有所不同
//补充:重写(0veriding):也称覆写或覆盖。指子继承父类后对已存在的属性修改,或新增额外的属性。
// 如果调用子类,但子类已经将对应属性进行修改。非要调用父类的话,可以用super关键字进行
public Solution(){}
public Solution(String name, int age){
//this是为了解决局部变量隐藏成员变量的问题
//this代表所在类的对象引用,方法被哪个对象调用,this就代表哪个对象
this.name = name;
this.age = age;
}
//成员方法set、get和show:
public void setName(String name) {
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
//封装的安全性体现在可以对传入参数进行检查,提高安全性,如
if(age < 0 || age > 120) {
System.out.println("age must be no less than 0 and no more 120");
}else {
this.age = age;
}
}
public int getAge(){
return age;
}
public void show(){
System.out.println(name + ", " + age);
}
}
package com.javabase;
/*
创建对象并为其成员变量赋值的2中方式:
1、无参构造方法创建对象后使用set赋值
2、带参构造方法直接创建带有属性值的对象
*/
public class Test {
//必须要在main函数下调用其他类,否则两个类都没有main会报错 cannot resolve symbol
public static void main(String[] args) {
Solution s1 = new Solution();
s1.show();
Solution s2 = new Solution();
s2.setName("Jack");
s2.setAge(18);
s2.show();
Solution s3 = new Solution("Mary", 16);
s3.show();
}
}
输出结果:
null, 0
Jack, 18
Mary, 16