一、封裝
封裝:告訴我們如何正確設計對象的屬性和方法
對象代表什么,就得封裝對應的數據,并提供數據對應的行為
封裝的好處:
-
讓編程變得很簡單,有什么事,找對象,調方法
-
降低學習成本,可以少學,少記,或者說壓根不用學,不用記對象有哪些方法,有需要時去找就行
二、Private關鍵字:
-
是一個權限修飾符
-
可以修飾成員變量(成員變量和成員方法)
-
被private修飾的成員只能在本類中才能訪問
eg:
package com.itheima.Class;
public class Girlfriend01 {
//屬性
private String name;
private int high;
private String gender;
private int age;
//針對于每一個私有化的成員變量,都需要提供get和set方法
// set方法:給成員變量賦值
// get方法:在提供成員變量的值
//作用:給成員變量name進行賦值
public void setName(String n) {//變量有參數但是無返回值,需要接收數據,不需要提供結果
name = n;
}
public String getName() {//作用:對外提供內的屬性,不需要接收數據,需要對外輸出結果,需要有返回值
return name;
}
// setAge:給成員變量age進行賦值
public void setAge(int a) {//只接收數據,變量有參數,但是沒有返回值
if (age >= 16 && age <= 50) {
age = a;
} else {
System.out.println("非法數據");
}
}
public int getAge() {
return age;
}
public void setHigh(int h) {
high = h;
}
public int getHigh() {
return high;
}
public void setGender(String g) {
gender = g;
}
public String getGender() {
return gender;
}
//行為
public void eat() {
System.out.println("她會吃飯");
}
public void play() {
System.out.println("她會干活");
}
}
package com.itheima.Class;
public class Girlfriend01Test01 {
public static void main(String[] args) {
Girlfriend01 p1 = new Girlfriend01();//創建一個對象
p1.setName("小詩詩");
p1.setAge(18);
p1.setGender("女");
p1.setHigh(170);
System.out.println(p1.getName());
System.out.println(p1.getAge());
System.out.println(p1.getGender());
System.out.println(p1.getHigh());
p1.eat();
p1.play();
Girlfriend01 p2 = new Girlfriend01();//創建第二個對象
p2.setName("筱筱");
p2.setAge(22);
p2.setGender("男");
p2.setHigh(168);
System.out.println(p2.getName());
System.out.println(p2.getAge());
System.out.println(p2.getGender());
System.out.println(p2.getHigh());
p2.eat();
p2.play();
}
}
運行結果:
小詩詩
18
女
170
她會吃飯
她會干活
筱筱
22
男
168
她會吃飯
她會干活
總結:
-
Private關鍵字是一個權限修飾符
-
可以修飾成員(成員變量和成員方法)
-
被private修飾的成員只能在本類中才能訪問
-
針對private修飾的成員變量,如果需要被其他類使用,提供相應的操作:
? 1、提供”setXxx(參數)“方法,用于給成員變量賦值,方法用public修飾
? 2、提供”getXxx()“方法,用于獲取成員變量的值,方法用public修飾
三、this.關鍵字
成員變量和局部變量:
-
成員變量:把定義的變量定義在方法的外面,類的里面叫做成員變量
-
局部變量:把變量定義在方法里面叫做局部變量
this的作用:
可以區別成員變量和局部變量,可以直接訪問成員變量
就近原則:
當定義的類和方法里面都有相同的變量,對于輸出語句而言,成員變量和局部變量哪個變量對輸出語句更近,程序就會打印哪個變量對應的值
public class Gilrfirend{
private int age;
public void method(){
int age = 10;
system.out.println(age)
}
}
運行結果:
10
如果我們要打印私有類的age,那么就要使用this.關鍵字:
public class Gilrfirend{
private int age;
public void method(){
int age = 10;
system.out.println(this.age)
}
}
運行結果:0
eg:
package com.itheima.Test002;
public class Girlfriend01 {
//屬性
private String name;
private int high;
private String gender;
private int age;
public void setName(String name) {
this.name = name;//直接使用成員變量,不使用局部變量
/*等號右邊的name觸發就近原則表示局部變量string name,
而string name記錄的是主方法里面的setName傳遞過來的詩詩
局部變量表示測試類中調方法傳遞過來的數據
*/
//等號的左邊表示成員位置的name
}
public String getName() {
return name;
}
public void setAge(int age) {
if (age >= 16 && age <= 50) {
this.age = age;//直接使用成員位置的age
} else {
System.out.println("非法數據");
}
}
public int getAge() {
return age;
}
public void setHigh(int high) {
this.high = high;//直接使用成員變量,不使用局部變量
}
public int getHigh() {
return high;
}
public void setGender(String gender) {
this.gender = gender;//直接使用成員變量,不使用局部變量
}
public String getGender() {
return gender;
}
//行為
public void eat() {
System.out.println("她會吃飯");
}
public void play() {
System.out.println("她會干活");
}
}
package com.itheima.Test002;
import com.itheima.Test001.Girlfriend01;
public class Girlfriend01Test01 {
public static void main(String[] args) {
Girlfriend01 p1 = new Girlfriend01();//創建一個對象
p1.setName("小詩詩");
p1.setAge(18);
p1.setGender("女");
p1.setHigh(170);
System.out.println(p1.getName());
System.out.println(p1.getAge());
System.out.println(p1.getGender());
System.out.println(p1.getHigh());
p1.eat();
p1.play();
com.itheima.Test001.Girlfriend01 p2 = new Girlfriend01();//創建第二個對象
p2.setName("筱筱");
p2.setAge(22);
p2.setGender("男");
p2.setHigh(168);
System.out.println(p2.getName());
System.out.println(p2.getAge());
System.out.println(p2.getGender());
System.out.println(p2.getHigh());
p2.eat();
p2.play();
}
}
運行結果:
小詩詩
18
女
170
她會吃飯
她會干活
筱筱
22
男
168
她會吃飯
她會干活