java 面向组件_Java 面向对象
面向對象:
1, 面向過程的思想
準備去一個地方:
先買車, 掛牌, 開導航, 踩油門, 過黃河, 穿越珠穆朗瑪峰...
2, 面向對象的思想
我開著車去, 車怎么去隨便
所有去這個地方的信息, 全部封裝在這個車里面, 我不了解這個車是怎么運行的, 我也不需要了解, 我只知道我能到達這個地方就行了
面向對象的基本思想是, 從現實世界中客觀存在的事物出發, 來構造軟件系統, 并在系統的構造中盡可能的運用人類的自然思維方式, 面向對象是目前人與計算機溝通最簡單的語言思想
合適的方法出現在合適的類里面
3, 什么是類, 什么是對象?
舉個栗子(什么是瓶子-->一類事物的抽象-->靜態屬性,動態屬性)
舉個栗子(人-->學生-->張三)
對象是類的一種實例化, 對象用"屬性"和"方法"來對應描述事物所具有的"靜態屬性"和"動態屬性"
類是用于描述同一類形的對象的一個抽象的概念, 類中定義了這一類對象應該具有的"靜態屬性"和"動態屬性"
類可以看成是一類對象的模板, 對象可以看成該類的一個具體實例
什么是類
學生是類, 瓶子是類, 老師是類
什么是對象
這個學生是對象, 這個瓶子是對象, 這個老師是對象,
符合這類事物的特征的某一個東西, 叫對象
領導-->顯示職工的姓名
職工:合適的方法出現在合適的類里(有圖有真相)
靜態屬性:
姓名: 張三
年齡: 24
工資: 3000
動態屬性:
顯示姓名
顯示年齡
修改姓名
領取工資
4, 類與類之間的關系
關聯關系(最弱的一種關系)(有圖有真相):
不好下一個定義, (A類中某個方法的參數是B類的某一個對象)
舉個栗子(學生老師)
老師要講課, 這是一個方法, 要傳個參數進去, 參數是學生對象
*繼承關系(避免多重繼承)(有圖有真相)
什么是一種什么
舉個栗子(運動員-->球類運動員-->籃球運動員)
聚合關系(聚集, 組合)(有圖有真相)
什么是什么的一部分
舉個栗子(球隊-->(王隊長, 隊員))
組合----人: 頭, 身體
聚集:構成這個類的這部分可以是這個類的, 也可以是另外一個類的,
組合:每一部分只屬于一個類
*實現關系(有圖有真相)
接口:只管定義方法, 怎么實現由子類去做
舉個栗子(接口(開車的方法), A類可以實現, B類也可以實現)
5, java類的定義, 對象和引用
定義一個類
public class 類名{
成員變量
方法
}
類名 變量名 = new 類名();
變量名....
java: 萬物皆對象, 處處皆需求
對象是對屬性(成員變量, 靜態屬性)和方法(函數, 動態屬性)的封裝
java中提供的類, 程序員自己定義的類
為什么要使用面向對象的思想:
面向對象更容易達到一種境界:
Reusable(重用性), Extensibility(可擴展性)
面向組件(Component)--比對象更高層次的抽象
WebService
成員變量和局部變量的區別
成員變量的初始化(有圖有真相)
成員變量可以是java中任意一種數據類型(基礎數據類型和引用類型)
什么是引用類型 ?
成員變量可以初始化, 也可以不初始化(java默認初始化)
成員變量的作用范圍-->整個類
類和對象的關系
C c1 = new C();
C c2 = new C();// c1, c2在這里是局部變量
7, 構造函數(構造方法)
在使用 new 來創建一個對象的時候就是調用的這個類的一個構造方法(構造函數), 構造方法名與類同名, 并且沒有返回值(沒有返回值也不要寫void)
空參的構造函數和有參數的構造函數
注釋, 命名規則!!!!!!!!!!
繼承中的構造函數:
--子類的構造方法必須調用父類的構造方法
--super(), 調用父類的構造方法, this()調用本類中另外的構造方法
9, 關鍵字this, static, package和import語句
this:(this表示當前對象的引用)
--在類的方法定義中使用this關鍵字代表使用該方法的對象的引用
--當必須指出當前使用方法的對象是誰時要使用this
--有時this可以處理方法中成員變量和參數重名的情況
--this可以看作是一個變量, 它的值是當前對象的引用
static(不在堆里面也不在棧里面, 在數據區(data seg)):
--類名直接 . 出來的變量是靜態變量, 每個類里面的靜態變量只有一份, 是公用的(賦值后每個實例化的對象都可使用)
--靜態方法中不可訪問非靜態成員
--靜態變量和靜態方法不需要實例化
package:
便于管理大型軟件系統中數目眾多的類, 解決類名重名的現象
10, 訪問控制, 權限修飾符(public private default protected)
puclic class 類名 {
private 類型 屬性1;
private 類型 屬性2;
set, get
}
11, 面向對象的三大特性: 封裝, 繼承, 多態
封裝(...)
繼承:
子類擁有父類的屬性和方法
多態((執行期間)動態綁定, 池綁定)(有圖有真相):
重載(overload):
方法名相同, 只有參數類型不同或者參數個數不同, 返回值不同是不能構成重載的
重寫(overwrite / override):
將父類的方法重新定義
--在子類中可以根據需要從父類中集成來的方法進行重寫
--重寫方法必須和被重寫的方法具有相同的方法名, 參數列表和返回類型
--重寫方法不能使用比被重寫方法更嚴格的訪問權限
toString方法的重寫
equals方法的重寫
12,super, final關鍵字
super: 指向父類的引用
final的變量值不能改變
final的方法不能被重寫
final的類不能被繼承
13, 對象轉型(casting)
--父類的引用可以指向其子類的對象
--父類的引用不可以訪問其子類對象新增的成員(包括屬性和方法), 如果硬要訪問-->強轉
--可以使用instanceof關鍵字來判斷一下這個變量是不是這個類或者是這類的子類
14, 抽象類(方法)
--使用abstract關鍵字修飾的類(方法)
--含有抽象方法的類必須被聲明為抽象類
--抽象類不能被實例化
--抽象方法只需要聲明, 不需要被實現
抽象方法:
定義方法, 沒有實現
15, 接口(一種特殊的抽象類, 所有的方法是一個抽象方法)
--語法定義:
public interface InterfaceTest{
}
一個類去實現一個接口, 使用implements關鍵字
public class test implements InterfaceTest{
}
--多個無關的類可以實現同一個接口
--一個類可以實現多個無關的接口
--與繼承關系類似, 接口與實現類之間存在多態性
--接口中的屬性默認為 public static final 也只能是public static final的
--接口中只能定義沒有實現的方法, 默認為 public, 也只能是 public, 接口可以繼承其他的接口并添加新的屬性和方法(沒有實現的)
其配圖如下所示:
總結
以上是生活随笔為你收集整理的java 面向组件_Java 面向对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 枚举抽象方法_Java枚举抽象
- 下一篇: java 通信 教程_Java实现简单的