這篇文章將為大家詳細講解有關什么是java的面向對象,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
創新互聯于2013年成立,是專業互聯網技術服務公司,擁有項目成都做網站、成都網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元重慶做網站,已為上家服務,為重慶各地企業和個人服務,聯系電話:18982081108
1、什么叫面向對象?
面向對象(Object-Oriented,簡稱OO)就是一種常見的程序結構設計方法。
面向對象思想的基礎是將相關的數據和方法放在一起,組合成一種新的復合數據類型,然后使用新創建的復合數據類型作為項目的基礎。
面向對象是一個很抽象的概念,它相對面向過程而言。
過程與對象都是一種解決問題的思想。
面向過程:強調的是功能行為,一種過程,先干啥,再干啥;
面向對象:將功能封裝到對象里,強調的是具備某功能的對象;
按照面向對象的思想,可以把任何的東西看做對象!
面向對象的三個特征:
封裝(Encapsulation);
繼承(Inheritance);
多態(Polymorphism)。
我的總結:
面向過程:強調的是具體的功能實現;(執行者)
面向對象:強調的是具備功能的對象。(管理者)
2、類
類(class)是Java 語言的最小編程單位,也是設計和實現Java 程序的基礎,本部分將深入介紹類的相關知識。
類的概念
類是一組事物共有特征和功能的描述。類是對于一組事物的總體描述,是按照面向對象技術進行設計時最小的單位,也是組成項目的最基本的模塊。類的概念是抽象的,類似于建筑設計中的圖紙,是對于現實需要代表的具體內容的抽象。類只包含框架結構,而不包含具體的數據。所以類代表的是總體,而不代表某個特定的個體。
我的總結:類是抽象的,對象是具體的,實實在在的!
類的定義:
[修飾符] class 類名{
1~n個構造方法;
0~n個字段;
0~n個方法
}
定義類,其實就是定義類里面的對象
對象包含:
狀態;(屬性)
功能、行為;(方法)
通過類來描述對象;
狀態--------成員變量;
功能、行為——方法;
Eg:
class Person{ //屬性 private String name; private int age; private int sal; //方法 public void show(){ System.out.println("個人情況:"+name+age+sal); } }
3、構造方法
構造方法:用來構造類的實例(每一個類都默認有一個無參的構造方法,得使用new調用)
字段:類或對象所包含的數據,對類狀態的一種描述;
方法:類或對象的特征或行為
作用:
給類中的字段進行初始化,可以用來創建對象。
特點:
方法名與類名相同
不用定義返回值類型
不需要寫return語句
注意:
默認構造方法的特點。
多個構造方法是以重載的形式存在的。
構造方法的重載:(需要哪個就去適配哪個,調用哪個)
this([實參]);調用當前類的構造方法
注意: this([實參]);必須放在構造器的第一行;
對象的產生格式:
類名稱 對象名 = new 類名稱();
因為有(),所以是方法,實際上它就是構造方法,并且是非私有的構造方法。
如:
CellPhone cp = new CellPhone();
Eg: class Person{ private String name; private int age; private int sal; public void show(){ System.out.println("個人情況:"+name+age+sal); } public Person(String name) { super(); this.name = name; } public Person(String name, int age) { super(); this.name = name; this.age = age; } public Person(String name, int age, int sal) { super(); this.name = name; this.age = age; this.sal = sal; } }
4、static關鍵字
特點:
隨著類的加載而加載
優先于對象存在
被所有對象所共享
可以直接被類名調用
使用注意:
靜態方法只能訪問靜態成員
但是非靜態成員方法可以訪問靜態成員;
靜態方法中不可以使用this,super關鍵字
主方法(main)是靜態的(可以利用類名去調用靜態的main方法,很正常!但是會陷入死循環,導致內存溢出,jvm自動停止!)
public static void main(String[] agrs){}
可修飾字段,方法。
用static 修飾的成員表示它屬于這個類共有,而不是屬于該類的單個實例。
static 修飾的字段 == 類字段
static 修飾的方法 == 類方法
沒使用static修飾的字段和方法,成員屬于類的單個實例,不屬于類。
沒有static 修飾的字段 == 實例字段
沒有static 修飾的方法 == 實例方法
類和實例訪問字段和方法的語法:
訪問類成員: 類.字段 類.方法
訪問實例成員: 實例.字段 實例.方法
我的總結:
static 修飾的字段和方法,既可以通過類調用,也可以使用實例調用;
沒static 修飾的字段和方法,只能使用實例來調用(建議使用:類名來調用; 其實在底層,對象調用類成員,也會轉換類名調用)
static關鍵字不能與this,super同時連用!
5、匿名對象
一個沒有名字的對象, 創建了一個對象出來,沒有賦給一個變量;
特點:
對方法或字段只進行一次調用時;
可作為實際參數進行傳遞;
只在堆里面開辟存儲區域,
只能使用一次, 使用完就被銷毀了;
何時使用?只拿來用一次!!
new Person();表示匿名對象,沒有名字的對象
new Person().age = 17;//使用一次之后就被銷毀了
6、this關鍵字
特點:this表示當前對象。
當前對象 ←→ 當前正在調用實例成員的對象
換言之:誰調用了方法,誰就是當前對象。
什么時候使用this關鍵字呢?
方法間的相互調用;
this.字段;
構造器中相互調用,但是此時this([參數])必須寫在構造方法第一行。
this不能用在static修飾的方法里和static修飾的代碼塊里;
Eg:構造方法中的this.name = name;
7、面向對象之封裝
封裝的兩個含義:
1.把對象的狀態和行為看成一個統一的整體,將二者存放在一個獨立的模塊中(類);
2."信息隱藏", 把不需要讓外界知道的信息隱藏起來,盡可能隱藏對象功能實現細節,字段;
封裝機制在程序中的體現是:
把描述對象的狀態用字段表示,描述對象的行為用方法表示,把字段和方法定義在一個類中,并保證外界不能任意更改其內部的字段值,也不允許任意調動其內部的功能方法。
程序中的一種體現:
通常將類中的成員變量私有化(private),通過對外提供方法(setXxx,getXxx),可對該變量(xxx)進行訪問。
boolean 類型的變量沒有getXX,只有 isXX;
Eg: class Person1{ private String name; private int age; private int sal; 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; } }
8、訪問修飾符
private 類訪問權限:本類內部可以訪問,不能繼承到子類;
default 什么都不寫,包訪問權限:本類內部可以訪問,同包其他類也可以訪問,同包可繼承;
protected 子類訪問權限:本類內部可以訪問,不同包的子類也可以訪問,同包其他類也可以訪問,能繼承到子類;
public 公共訪問權限:任何地方都可以訪問,能繼承到子類;
總結:
9、類的設計分析
分析思路:
根據要求寫出類所包含的字段;
所有的字段都必須私有化;
封裝之后的字段可通過setter和getter設值和取得;
按需求可添加若干構造方法;
根據需求可添加相應的方法;
類中的所有方法都不要直接處理(輸出打印),而是交給調用者去處理。
10、面向對象之繼承
首先有反映一般事物特性的類,然后在此基礎上反映出特殊事物的類;
也就是說:繼承是一種從一般到特殊的關系;
特點:
1、提高了代碼的復用性。
2、讓類與類之間產生關系,有了這個繼承關系才有了多態的特性。
3、Java語言中只支持單繼承(有別于C語言)。
因為多繼承容易帶來安全隱患(父類多了, 功能相同的話,就會出現調用不確定性嗎,覆寫一個方法,到底覆寫的誰的?)。
ps:接口可以實現多繼承
4、Java支持多層繼承,object是每個類的超類,實現樹形結構。
我的總結:
繼承是多態的前提。
對類而言,只支持單繼承。
格式:
[修飾符] class SubClass extends SuperClass
按照這種關系,我們把SuperClass類稱為父類或基類,把SubClass稱為子類或派生類或拓展類;
我的總結:
java.lang.Object是所有類的父類,
Object要么是直接父類要么是間接父類。
Eg:
學生屬于人的一種特殊情況,此時我把人的共性寫在Person類里面,為了讓學生擁有這些共性(別的比如老師也可以有這些共性),然后我就讓學生來拓展Person類。
我的總結:
子類與父類的關系:
子類拓展父類(子類是父類的一種特殊情況)
主要是以父類為基礎,然后添加屬于自己的字段和方法。
父類的私有成員子類不能繼承到;
父類的構造方法不能被繼承;
Java只支持單繼承,不支持多繼承;//不然的話,比如show方法,繼承了多個,不知道到底調用那一個。
一個類有且只有一個直接父類;
一個類沒顯示的繼承其他的一個類的時候,默認的直接父類就是Object類;
Student 的直接父類是Person,Object類也是Student類的父類,但是是間接父類;
一旦一個類顯示的繼承了其他的一個類的時候,此時默認的直接父類Object就會被取消;
Java里一個類只能有一個直接父類;
java.lang.Object是所有類的父類,Object要么是直接父類要么是間接父類。
子類對象實例化過程
在繼承操作中,對于子類對象的實例化:
子類對象在實例化之前必須首先調用父類中的構造方法之后再調用自身的構造方法。
關于什么是java的面向對象就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
文章標題:什么是java的面向對象
文章分享:http://vcdvsql.cn/article46/gdjohg.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、建站公司、動態網站、軟件開發、網站策劃、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯