Java面向对象概述
一、面向?qū)ο蠛兔嫦蜻^程
? ? ??面向過程:Procedure Oriented??是一種自頂向下的編程
? ? ??面向?qū)ο?Object Oriented??是將事物高度抽象化,必須先建立抽象模型(有屬性和行為),之后直接使用模型就行?
例:人把大象裝進冰箱
? ? ? ? ?面向過程:
? ? ? ? ? ? ? ? ?1)打開冰箱
? ? ? ? ? ? ? ? ?2)把大象放進去
? ? ? ? ? ? ? ? ?3 )關(guān)閉冰箱門
? ? ? ? ?面向?qū)ο?#xff1a;
? ? ? ? ? ? ? ? ? 人{
? ? ? ? ? ? ? ? ? ? ? ? 打開(冰箱){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?冰箱.開開()
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ?操作(大象){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 大象.進入(冰箱)
? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? 關(guān)閉(冰箱){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 冰箱.合上()
? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ?大象{
? ? ? ? ? ? ? ? ? ? ?進入(冰箱){? ?}
? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?冰箱{
? ? ? ? ? ? ? ? ? ? ?開開(){? ?}
? ? ? ? ? ? ? ? ? ? ?合上(){???}
? ? ? ? ? ? ? ? ? ? }
? ? ??面向?qū)ο蟮娜筇卣?#xff1a;封裝、繼承和多態(tài)
二、類的相關(guān)知識
? ? ??類是對現(xiàn)實生活中一類具有共同特征的事物的抽象,比如所有的鳥都會飛,由屬性(成員變量或Field)? &行為(成員方法或Method)組成。對象是實際存在的該類事物的每個個體,是類的具體實例化。?
? ? ??成員變量和局部變量??
? ? ? ? ? ???在方法體外,類體內(nèi)聲明的變量稱為成員變量,分為實例變量(不以static修飾)和類變量(以static修飾),實例變量存在于對象所在的堆內(nèi)存中,可以有修飾符,如果在聲明的時候,不顯式的賦值,
那么不同數(shù)據(jù)類型會有不同的默認初始化值;在方法體內(nèi)部聲明的變量稱為局部變量,分為形參(方法簽名中定義的變量)、方法局部變量(在方法內(nèi)定義)、代碼塊局部變量(在代碼塊內(nèi)定義),
局部變量存在于棧內(nèi)存中,沒有修飾符,與所在的方法修飾符相同,一定要顯式的賦值(局部變量沒有默認初始化值)??
package com.yyx.pratice;public class Person {// 成員變量private String name;private int age;// 成員方法public void eatFood() {//局部變量String foodName = "漢堡";System.out.println("我在吃" + foodName);}public static void main(String[] args) {Person person=new Person();person.eatFood();} }三、類的內(nèi)存分析
? ? ??所有的對象名稱都在棧內(nèi)存中保存,而對象的具體內(nèi)容則保存在對應(yīng)的堆內(nèi)存中,必須使用new關(guān)鍵字才能開辟堆內(nèi)存空間
類屬于引用數(shù)據(jù)類型,引用數(shù)據(jù)類型就是指一段堆內(nèi)存空間可以同時被多個棧內(nèi)存指向
package com.yyx.pratice;public class TestZoom {public static void main(String[] args) {Animal a1 = new Animal();a1.name = "花花";// 對象.屬性直接賦值a1.setAge(3);// 封裝思想System.out.println(a1.name + " " + a1.getAge());Animal a2=new Animal();System.out.println(a2.name + " " + a2.getAge());Animal a3=new Animal();a3=a1;System.out.println(a3.name + " " + a3.getAge());} }class Animal {String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}} 運行結(jié)果:花花 3null 0花花 3
四、類的構(gòu)造方法
- ? ? ???構(gòu)造方法的方法名必須與類名一樣
- ? ? ? ?構(gòu)造方法沒有返回類型,也不能定義為void,在方法名前面不聲明方法類型,不能被static、final、synchronized、abstract、native修飾
- ? ? ??一個類可以定義多個構(gòu)造方法,如果在定義類時沒有定義構(gòu)造方法,則編譯系統(tǒng)會自動插入一個無參數(shù)的默認構(gòu)造器,這個構(gòu)造器不執(zhí)行任何代碼
- ? ? ? 構(gòu)造方法不能由編程人員調(diào)用,而由系統(tǒng)調(diào)用
- ? ? ? 構(gòu)造方法的主要作用是完成對象的初始化工作,它能夠把定義對象時的參數(shù)傳給對象的域
? ? ?類對象的屬性賦值的先后順序:
?
? ? ? ? ? ? ? ??
轉(zhuǎn)載于:https://www.cnblogs.com/xianya/p/9095392.html
總結(jié)
以上是生活随笔為你收集整理的Java面向对象概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nyoj13-Fibonacci数
- 下一篇: BZOJ4818 [SDOI2017]