对象属性的调用_面向对象的三主线之一:Java类及类的成员(1)
01
屬性
屬性的賦值過程
①默認初始化值
②顯式初始化
②在代碼塊中賦值
③構造器中初始化
④通過“對象.方法”或“對象.屬性"方法賦值
注:顯式初始化和代碼塊中賦值的先后取決于其順序
this.屬性
“this.屬性”表示調用當前對象的屬性。通常情況下省略“this”,只有在特殊情況下才會顯式使用。
>>方法的形參和屬性同名時
super.屬性
“super.屬性”表示調用當前父類中聲明的屬性。通常情況下省略“super”,只有在特殊情況下才會顯式使用。
>>子父類定義同名的屬性,想在子類中調用父類中聲明的屬性時。
屬性繼承
當子類繼承父類后,子類就獲得了父類中聲明的屬性包括聲明為private的屬性,只是因為封裝性的影響,使得子類不能直接調用父類的私有屬性。
創建子類對象,就會在堆空間中加載所有父類中聲明的屬性。
多態性不適用于屬性
多態性只適用于方法,不適用于屬性,是因為在多態中,屬性的編譯運行都看左邊。
static修飾屬性
實例變量 VS 靜態變量
實例變量:每個對象都擁有一套類中的非靜態屬性,當修改其中一個對象的非靜態屬性時,不會導致其他對象中該屬性的值發生變化。
靜態變量:多個對象共享一個靜態變量,當通過某一個對象修改講臺變量時,會導致其他對象調用此靜態變量時是修改后的。
靜態屬性的說明
靜態變量是隨著類的加載而加載的,早于對象的創建。
由于類只會加載一次,靜態變量在內存中也只會存在一份,存在于方法區的靜態域中。
靜態變量可以通過“類.屬性”和“對象.屬性”調用,實例變量僅可以通過“對象.屬性”調用。
final屬性
final修飾屬性,可以考慮的位置:
>顯式初始化
每個對象值一樣時使用
>代碼塊中初始化
通常調用方法可能拋出異常時用
>構造器中初始化
每個構造器都得賦值,每個對象值都不同
static final 修飾屬性
該屬性即為全局變量,在類中始終不變的一個常量。
內部類和屬性
>內部類調用外部類屬性:“外部類.this.屬性”
>內部類中可以定義屬性
>“this.屬性”指的是內部類的屬性
代碼展示一
class?Base?{????int?count?=?10;
????public?void?display()?{
????????System.out.println(this.count);
????}
}
class?Sub?extends?Base?{
????int?count?=?20;
????public?void?display()?{
????????System.out.println(this.count);
????}
}
public?class?FieldMethodTest?{
????public?static?void?main(String[]?args)?{
????????Sub?s?=?new?Sub();
????????System.out.println(s.count);//20
????????s.display();//20
????????Base?b?=?s;//多態性
????????System.out.println(b?==?s);//true
????????System.out.println(b.count);//10
????????b.display();//20
????}
}
代碼展示二
public?class?CircleTest?{????public?static?void?main(String[]?args)?{
????????Circle?c1?=?new?Circle();
????????Circle?c2?=?new?Circle();
????????Circle?c3?=?new?Circle(3.4);
????????System.out.println("c1的id:"?+?c1.getId());
????????System.out.println("c2的id:"?+?c2.getId());
????????System.out.println("c3的id:"?+?c3.getId());
????????System.out.println("創建的圓的個數為:"?+?Circle.getTotal());
????}
}
class?Circle?{
????private?double?radius;
????private?int?id;//?自動賦值
????public?Circle()?{
????????id?=?init++;
????????total++;
????}
????public?Circle(double?radius)?{
????????this();
????????this.radius?=?radius;
????}
????private?static?int?total;//?記錄創建的圓的個數
????private?static?int?init?=?1001;//?static聲明的屬性被所有對象所共享
????public?double?findArea()?{
????????return?3.14?*?radius?*?radius;
????}
????public?double?getRadius()?{
????????return?radius;
????}
????public?void?setRadius(double?radius)?{
????????this.radius?=?radius;
????}
????public?int?getId()?{
????????return?id;
????}
????public?static?int?getTotal()?{
????????return?total;
????}
}
總結
以上是生活随笔為你收集整理的对象属性的调用_面向对象的三主线之一:Java类及类的成员(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为荣耀手机指令代码大全_双十二,华为/
- 下一篇: coreldraw的线条怎么变成圆头_别