第5篇-JAVA面向對象Ⅰ
第5篇-JAVA面向對象Ⅰ
每篇一句 :面向對象面向君,不負代碼不負卿
初學心得: 代碼虐我千百遍,我待代碼如初戀
(筆者:JEEP/711)[JAVA筆記 | 時間:2017-04-03| JAVA面向對象 Ⅰ]
1.JAVA作為一種面向對象語言,具有以下基本概念:
● 多態
● 繼承
● 封裝
● 抽象
● 類
● 對象
● 實例
● 方法
● 重載
2.面向對象
什麽是面向對象?:
面向對象是一種編程思想
通俗的說:面向對象是一種思考問題的思維方式為什麽使用面向對象以及它的作用
計算機語言為了更好的去描述現實生活中的事物,按照生活中的思考方式來定義,這樣我們使用起來會更加方便
作用:將功能封裝到對象裏,強調的是具備某功能的對象;面向對象的三個特征:
1.封裝(Encapsulation)
2.繼承(Inheritance)
3.多態(Polymorphism)
3.JAVA類和對象
類與對象的概念
● 類:類是一個模板,它描述一類對象的行為和狀態。
(1).什麽是類?類是分類和類別的意思
通過分類,可以區別不同的事物種類,
類是一組具有共同特性(屬性)與行為(方法)的事物集合(2).類與對象之間的關系
● 對象:對象是類的一個實例(對象不是找個男/女朋友),而是有狀態和行為
例如,一只貓咪是一個對象,它的狀態有:顏色、名字、品種;行為有:搖尾巴、叫、吃等
類表示一個共性的產物,是一個綜合的特征,是一個個性的產物,也是一個個體的特征類由屬性和方法組成
屬性:相當於一個個的特征
方法:相當於人的一個個的行為,如,說話,吃飯…類的定義格式
1./** 2.*類的定義格式代碼 3.**/ 4.[修飾符] class 類名{ 5. 1~n個構造方法; 6. 0~n個字段; 7. 0~n個方法; 8.} 9./** 10.*定義一個Demo類 11.*類名和方法名:類名 首字母大寫 方法名首字母小寫 12.**/ 13.class Demo{ 14. String str = "Good"; //成員變量,也成為字段,類或對象所包含的數據,對類狀態的一種描述 15. //方法,相當於類或對象的特征或行為 16. public void show(){ 17. System.out.println("輸出"+str); //執行輸出語句 18. } 19.} 20.一個類可以包含以下類型變量: 21.● 局部變量:在方法、構造方法或者語句塊中定義的變量被稱為局部變量 22.變量聲明和初始化都是在方法中,方法結束後,變量就會自動銷毀。 23.● 成員變量:成員變量是定義在類中,方法體之外的變量。這種變量在創建對象的時候實例化 24.成員變量可以被類中方法、構造方法和特定類的語句塊訪問。 25.● 類變量:類變量也聲明在類中,方法體之外,但必須聲明為static類型對象的定義、創建以及使用格式
對象是根據類創建的,在Java中,使用關鍵字new來創建一個新的對象,創建對象需要以下三步:
● 聲明:聲明一個對象,包括對象名稱和對象類型。
● 實例化:使用關鍵字new來創建一個對象。
● 初始化:使用new創建對象時,會調用構造方法初始化對象。一個類要想真正的進行操作,則必須依靠對象,對象的定義如下:
1.類名稱 對象名稱 = new 類名稱(); 這樣的格式就產生了對象如果想要訪問類中的屬性和方法(方法的定義),,則可以依靠以下語法:
1.1.訪問類中的屬性:對象.屬性; 2.調用類中的方法: 對象.方法();在JAVA中對象聲明有兩個含義:
1.1.聲明對象:personper = null; //表示聲明了一個對象,但是此對象無法使用,per沒有具體的內存指向 2.2.實例化對象:per = new pcrson();//表示實例化了對象,可以使用 3.類名 對象名稱 = new 類名(); //兩步操作 4.類名 對象名稱 ; //聲明對象 5.對象名稱 = new 類名(); //實例化對象 6.例:Demo demo = new Demo(); 7.通過"對象名.對象成員"的方式來操作對象中的內容
4.static關鍵字
1.static關鍵字
使用static關鍵字修飾一個屬性,聲明為static變量實質上就是全局變量
使用static關鍵字修飾一個方法,在一個類中定義一個方法為static
無需本類的對象即可調用此方法
使用static關鍵字修飾一個類2.內存結構分析
存在方法區,靜態數據不屬於對象,屬於類,直接用類名調用屬性,而不是用對象調用屬性
無法從靜態上下文中引用非靜態:
靜態屬性和方法在類加載後就存到方法區內存中,此時,還沒有產生對象,而普通方法和屬性
屬於對象,所以不能調用3.聲明static的方法限制
僅能調用其他的static方法
只能訪問static數據
不能以任何方式引用this或superstatic關鍵字特點:
隨著類的加載而加載,優先於對象存在,被所有對象所共享,可以直接被類名調用
static關鍵字使用註意:
靜態方法只能訪問靜態成員,但是非靜態成員可以訪問靜態成員;
靜態方法中不可以使用this,super關鍵字1.主方法(main)是靜態的 2.public static void main(String[] agrs){}static關鍵字的使用:
1.用static 修飾的成員表示它屬於這個類共有,而不是屬於該類的單個實例 2.static 修飾的字段 == 類字段 3.static 修飾的方法 == 類方法
5.new關鍵字
new 表示創建一個對象,表示實例化對象,表示申請內存空間
什麽是實例化:
代碼在類中,類是抽象的,不是具體的,代碼都是針對抽象來編寫的,但是程序運行起來就需要用到具體的對象去執行
在編寫完類以後,具體化成為實實在在的對象,實例化對象就是把類具體化為一個對象的過程
6.匿名對象
匿名對象就是定義一個沒有名稱的對象
該對象特點是只能使用一次,該對象會直接在堆中開辟內存空間
該對象使用後會成為垃圾對象,被GC回收1.new 類名("").方法名(); //生成匿名對象,只能使用一次匿名對象特點:
1.對方法或字段只進行一次調用; 2.new Car().show(); 3.new Car().run(); 4.可作為實際參數進行傳遞,只在堆內存中開辟空間,而沒有在棧內存的引用 5.public void show(Car c){ } 6.new Car().show(new Car());
7.對象的引用
1. //1. 創建了一個Demo1 的實例(對象) 2.Demo1 demo = new Demo1();//2. 把這個Demo 實例賦給 demo 變量 3. demo.brand="HelloWorld"; //引用變量指向對象,也就是說引用型變量存放的僅僅是一個引用
8.this關鍵字
this關鍵字特點:this表示當前對象。
調用類中的屬性、調用類中的方法或構造方法、表示當前對象
當前對象 ←→ 當前正在調用實例成員的對象
換言之:誰調用了方法,誰就是當前對象。
什麽時候使用this關鍵字呢?
1.方法間的相互調用; 2.this.字段;
3.構造器中相互調用,但是此時this([參數])必須寫在構造方法第一行。
4.this不能用在static修飾的方法裏和static修飾的代碼塊裏;
9.import語句
JAVA包主要用來對類和接口進行分類
當開發Java程序時,可能編寫成百上千的類,因此很有必要對類和接口進行分類
Import語句通俗的說就是引入或導入的意思
例如,下面的命令行將會命令編譯器載入java_installation/java/io路徑下的所有類1.import java.io.*; //*星號表示尋找某個包下被使用到的全部類
10.JAVA常用包介紹
1.java.lang : 語言核心類,系統自動導入 2.java.util : java 工具類、集合框架類和接口 3.java.net : 網絡編程接口和類 4.java.io : 流的接口和類 5.java.text : java格式化相關類 6.java.sql : jdbc相關接口和類 7.java.awt : 抽象窗口工具集相關接口和類 8.java.swing :圖形用戶界面相關接口和類(可跨平臺)
11.JAVA訪問修飾符
修飾符 類內部 同一個包 子類 任何地方 private default protected public private(私有的):類訪問權限:本類內部可以訪問,不能繼承到子類
default(默認的):什麽都不寫,包訪問權限:本類內部可以訪問,同包其他類也可以訪問,同包可繼承
protected(保護的):子類訪問權限:本類內部可以訪問,不同包的子類也可以訪問,同包其他類也可以訪問,能繼承到子類
public(公共的):公共訪問權限:任何地方都可以訪問,能繼承到子類
12.構造方法
什麽是構造方法?構造方法就是類構造對象時調用的方法,用於對象的初始化工作
構造方法是實例化一個類的對象時,也就是new的時候,最先調用的方法
構造方法的定義:是在類中定義,定義格式,方法名稱與類名相同,無返回值類型聲明
對象實例化語法:1.Demo2 de = new Demo2(); //new Demo2後面有括號,帶括號表示調用了方法,此時調用的方法就是構造方法每個類都有構造方法,如果沒有顯式地為類定義構造方法,Java編譯器將會為該類提供一個默認構造方法
在創建一個對象的時候,至少要調用一個構造方法,構造方法的名稱必須與類同名,一個類可以有多個構造方法對象的產生格式:
1.類名稱 對象名 = new 類名稱(); 2.因為有(),所以是方法,實際上它就是構造方法,並且是非私有的構造方法。 3.如:Demo3 de = new Demo3();構造方法特點:
方法名與類名相同,不用定義返回值類型 ,不需要寫return語句
構造方法作用:給類中的字段進行初始化,可以用來創建對象
初學(面向對象) Ⅰ 難點: ★★★★★
希望每一篇文章都能夠對讀者們提供幫助與提升,這乃是每一位筆者的初衷
感謝您的閱讀 歡迎您的留言與建議
新浪官方微博: @中國熱點影視傳媒
Github博客: https://github.com/jeep711/jeep711.github.io
Blog Garden:http://www.cnblogs.com/JEEP711/
W3C/Blog:http://www.w3cschool.cn/jeep711blog/
CSDN/Blog:http://blog.csdn.net/jeep911
51CTO/Blog:http://jeep711.blog.51cto.com/
碼雲:http://git.oschina.net/JEEP711/jeep711.github.io
郵箱: [email protected],[email protected]
本文出自 “JEEP711” 博客,轉載請與作者聯系!
第5篇-JAVA面向對象Ⅰ