java物件導向(1)
物件導向特點:封裝,繼承,多型
封裝
封裝
將某一類物件作為一個類,將它的所有共性封裝在一起,有自己私有的屬性和方法,但只對外提供一些公共方法,這個過程就是一個封裝的過程。
建構函式
初始化物件,如果沒有建構函式,物件將無法建立,一般我們沒有顯示建立建構函式時,java有自帶的隱含建構函式,如果我們想在初始話物件時給物件新增一些初始值,那麼可以自定義建構函式,在建立物件時,顯示呼叫。
構造程式碼塊
在建構函式執行前執行。
this關鍵字
看上去是用於區分區域性變數和成員變數情況
實際this代表它所在函式所屬物件的引用
this關鍵字在建構函式間呼叫,並且this語句只能定義在建構函式的第一行,因為初始化要先執行
this關鍵字在建構函式間呼叫,並且this語句只能定義在建構函式的第一行,因為初始化要先執行
static關鍵字
用法:是一個修飾符,用於修飾成員(成員變數、成員函式)。
當成員被靜態修飾後,就多了一個呼叫方式,除了可以被物件呼叫外,還可以直接被類名呼叫。
類名.靜態成員。
static 特點
隨著類的載入而載入,隨著類的消失而消失。說明它的生命週期最長
優先於物件存在
被所有物件所共享
注意事項:靜態方法只能訪問靜態成員,非靜態方法既可以訪問非靜態成員,也可以訪問靜態成員
靜態方法中不可以定義this,super關鍵字。因為靜態優先於物件存在,所以靜態方法中不可以用this
靜態有利有弊:
利處:對物件的共享資料進行單獨空間儲存,節省空間。沒有必要每一個物件中都儲存一份。
弊端:生命週期過長,訪問出現侷限性。(靜態雖好,只能訪問靜態)
主函式
是一個特殊的函式。作為程式的入口,可以被jvm呼叫。
主函式的定義:
public:代表著該函式訪問許可權是最大的。
static:代表主函式隨著類的載入就已經存在了
void:主函式沒有具體的返回值
main:不是關鍵字,但是是一個特殊的單詞,可以被jvm識別
(string[] arr):函式的引數,引數型別是一個陣列,該陣列中的元素是字串。字串型別的資料
主函式是固定格式的:jvm 識別
javadoc:幫助文件的製作
靜態程式碼塊
隨著類的載入而執行,只執行一次
用於給類初始化,並優先於主函式
物件的初始化過程
class Person
{
private Person(){}
private String name = "hah";
private int age;
private static String country = "cn";
Person(String name,int age)
{
this.name = name;
this.age = age;
}
//建構函式程式碼塊
{
System.out.println(name+".."+age);
}
public void setName(String name)
{
this.name = name;
}
public void speak()
{
System.out.println(this.name+"..."+this.age);
}
public static void showCountry()
{
System.out.println("country="+Person.country);
Person.method();
}
public static void method()
{
System.out.println("method run");
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person("zhangsan",20);
p.setName("lisi");
new Person();
}
}
/*
Person p = new Person("zhangsan",20);
該句話都做了什麼事情?
1,因為new用到了Person.class.所以會先找到Person.class檔案並載入到記憶體中。
2,執行該類中的static程式碼塊,如果有的話,給Person.class類進行初始化。
3,在堆記憶體中開闢空間,分配記憶體地址。
4,在堆記憶體中建立物件的特有屬性。並進行預設初始化。
5,對屬性進行顯示初始化。
6,對物件進行構造程式碼塊初始化。
7,對物件進行對應的建構函式初始化。
8,將記憶體地址付給棧記憶體中的p變數。
*/
{
private Person(){}
private String name = "hah";
private int age;
private static String country = "cn";
Person(String name,int age)
{
this.name = name;
this.age = age;
}
//建構函式程式碼塊
{
System.out.println(name+".."+age);
}
public void setName(String name)
{
this.name = name;
}
public void speak()
{
System.out.println(this.name+"..."+this.age);
}
public static void showCountry()
{
System.out.println("country="+Person.country);
Person.method();
}
public static void method()
{
System.out.println("method run");
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person("zhangsan",20);
p.setName("lisi");
new Person();
}
}
/*
Person p = new Person("zhangsan",20);
該句話都做了什麼事情?
1,因為new用到了Person.class.所以會先找到Person.class檔案並載入到記憶體中。
2,執行該類中的static程式碼塊,如果有的話,給Person.class類進行初始化。
3,在堆記憶體中開闢空間,分配記憶體地址。
4,在堆記憶體中建立物件的特有屬性。並進行預設初始化。
5,對屬性進行顯示初始化。
6,對物件進行構造程式碼塊初始化。
7,對物件進行對應的建構函式初始化。
8,將記憶體地址付給棧記憶體中的p變數。
*/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27026361/viewspace-1182850/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java — 物件導向Java物件
- Java物件導向Java物件
- [Java物件導向]Java物件
- java從頭開始--物件導向1Java物件
- JAVA物件導向基礎--物件導向介紹Java物件
- Js物件導向(1): 理解物件JS物件
- Java:Java的物件導向Java物件
- java的物件導向Java物件
- Java物件導向(一)Java物件
- java物件導向(中)Java物件
- java物件導向(上)Java物件
- Java 物件導向概述Java物件
- java物件導向(2)Java物件
- java物件導向(3)Java物件
- java物件導向(4)Java物件
- java物件導向(5)Java物件
- Java物件導向概述Java物件
- JAVA物件導向思想Java物件
- Java物件導向——類與物件Java物件
- JAVA(一)JAVA基礎/物件導向基礎/高階物件導向Java物件
- 物件導向-物件導向思想物件
- JAVA物件導向之多型Java物件多型
- JAVA物件導向基礎Java物件
- 二、Java之物件導向Java物件
- Java物件導向--多型Java物件多型
- java物件導向繼承Java物件繼承
- java物件導向(異常)Java物件
- java物件導向(包package)Java物件Package
- 【Java 基礎】——物件導向Java物件
- JAVA物件導向--抽象類Java物件抽象
- Java基礎 --- 物件導向Java物件
- [Java物件導向]finalJava物件
- [Java物件導向]static方法Java物件
- java day6 java陣列2與物件導向1Java陣列物件
- 12 物件導向基礎-1物件
- Java物件導向詳解-上Java物件
- java基礎二:物件導向Java物件
- java物件導向的面試題Java物件面試題