面向物件概念、封裝之(private)、this
阿新 • • 發佈:2019-01-05
1.什麼時候變數會有一個預設值
(1)比如定義了一個汽車類,汽車類裡定義了顏色String color,車胎數量int number; new Car()後會給變數一個預設值,是可以輸出的。
eg.
public class Car {
String color;
int number;
public void run(){
System.out.println("車在跑"+color+number);
}
}
測試類:
public static void main(String[] args) {
Car c = new Car();
c.run();//輸出 車在跑null0
}
(2)單純的在一個類裡定義了屬性,沒有初始化,不能輸出
eg.
int a ;
System.out.println(a);
2.成員變數和區域性變數的區別:
(1)定義位置上的區別
成員變數,定義在類中,方法外
區域性變數,方法內,語句中
(2)作用域不同
成員變數,作用範圍是整個類
區域性變數,作用範圍方法內,語句中
(3)預設值不同
成員變數,有自己的預設值
區域性變數,沒有預設值,不賦值不能使用
(4)記憶體位置不同
成員變數:跟隨物件進入堆記憶體儲存
區域性變數:跟隨自己的方法,進入棧記憶體
3。為了提高安全性,一般會給成員變數設定成private,然後提供公共的訪問方式:方法。
比如:public class Person{
private String name;
private int age;
public int getAge(){
return this.age;
}
}
4.成員變數和區域性變數名重名問題
注意:在區域性變數的方法裡,引用成員變數要用this.成員變數
public class Person{
String name = "成員變數";
int age = 20;
public void speak(){
String name = "區域性變數";
int age = 10;
System.out.println("人在說話"+name + age);//輸出:人在說話成員變數20
System.out.println("人在說話"+name + age);//輸出:人在說話區域性變數10 !!!
}
}
(1)比如定義了一個汽車類,汽車類裡定義了顏色String color,車胎數量int number; new Car()後會給變數一個預設值,是可以輸出的。
eg.
public class Car {
String color;
int number;
public void run(){
System.out.println("車在跑"+color+number);
}
}
測試類:
public static void main(String[] args) {
Car c = new Car();
c.run();//輸出 車在跑null0
}
(2)單純的在一個類裡定義了屬性,沒有初始化,不能輸出
eg.
int a ;
System.out.println(a);
2.成員變數和區域性變數的區別:
(1)定義位置上的區別
成員變數,定義在類中,方法外
區域性變數,方法內,語句中
(2)作用域不同
成員變數,作用範圍是整個類
區域性變數,作用範圍方法內,語句中
(3)預設值不同
成員變數,有自己的預設值
區域性變數,沒有預設值,不賦值不能使用
(4)記憶體位置不同
成員變數:跟隨物件進入堆記憶體儲存
區域性變數:跟隨自己的方法,進入棧記憶體
3。為了提高安全性,一般會給成員變數設定成private,然後提供公共的訪問方式:方法。
比如:public class Person{
private String name;
private int age;
public int getAge(){
return this.age;
}
}
4.成員變數和區域性變數名重名問題
注意:在區域性變數的方法裡,引用成員變數要用this.成員變數
public class Person{
String name = "成員變數";
int age = 20;
public void speak(){
String name = "區域性變數";
int age = 10;
System.out.println("人在說話"+name + age);//輸出:人在說話成員變數20
System.out.println("人在說話"+name + age);//輸出:人在說話區域性變數10 !!!
}
}