国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java學習筆記3--類與對象的基礎

2019-11-14 22:09:37
字體:
來源:轉載
供稿:網友
java學習筆記3--類與對象的基礎

本文地址:http://m.survivalescaperooms.com/archimedes/p/java-study-note3.html,轉載請注明源地址。

1、面向對象的程序設計方法概述

面向對象的程序設計

與結構化程序設計方法相比,更符合人類認識現實世界的思維方式,已成為程序設計的主流方向

涉及的主要概念:抽象、封裝、繼承、多態

對象

現實世界中:萬物皆對象,都具有各自的屬性,對外界都呈現各自的行為

程序中:一切都是對象,都具有標識 (identity), 屬性和行為(方法),通過一個或多個變量來保存其狀態,通過方法(method) 實現他的行為

將屬性及行為相同或相似的對象歸為一類,類可以看成是對象的抽象,代表了此類對象所具有的共有屬性和行為,在面向對象的程序設計中,每一個對象都屬于某個特定的類

抽象

忽略問題中與當前目標無關的方面,以便更充分地注意與當前目標有關的方面;計算機軟件開發中所使用的抽象有:過程抽象和數據抽象

過程抽象:

–-將整個系統的功能劃分為若干部分,強調功能完成的過程和步驟,而隱藏其具體的實現

–-任何一個明確定義的功能操作都可被看作單個的實體,盡管這個操作實際上可能由一系列更低級的操作來完成

–-基于過程抽象的兩個標準程序設計技術過程:分解、遞歸技術

數據抽象

–-將需要處理的數據和這些數據上的操作結合在一起,抽象成不同的抽象數據類型

–-每個抽象數據類型既包含了數據,也包含了針對這些數據的操作

–-相對于過程抽象,數據抽象是更為合理的抽象方法

例:鐘表

數據(屬性)

int Hour; int Minute; int Second;

方法(行為)

SetTime(); ShowTime();

封裝
  • 是一種信息隱蔽技術

  • 利用抽象數據類型將數據和基于數據的操作封裝在一起

  • 用戶只能看到對象的封裝界面信息,對象的內部細節對用戶是隱蔽的

  • 封裝的目的在于將對象的使用者和設計者分開,使用者不必知道行為實現的細節,只需使用設計者提供的消息來訪問對象

繼承
  • 是指新的類可以獲得已有類(稱為超類、基類或父類)的屬性和行為,稱新類為已有類的派生類(也稱為子類)

  • 在繼承過程中派生類繼承了基類的特性,包括方法和實例變量

  • 派生類也可修改繼承的方法或增加新的方法,使之更適合特殊的需要

  • 有助于解決軟件的可重用性問題,使程序結構清晰,降低了編碼和維護的工作量

PS:Java語言僅支持單繼承

多態
  • 一個程序中同名的不同方法共存

  • 主要通過子類對父類方法的覆蓋來實現

  • 不同類的對象可以響應同名的消息(方法) ,具體的實現方法卻不同

  • 使語言具有靈活、抽象、行為共享、代碼共享的優勢,很好地解決了應用程序方法同名問題

2、類與對象

在程序中,對象是通過一種抽象數據類型來描述的,這種抽象數據類型稱為類(Class),一個類是對一類對象的描述。類是構造對象的模板,對象是類的具體實例

類的聲明聲明形式:

[public] [abstract | final] class 類名稱[extends 父類名稱][implements 接口名稱列表]{

  變量成員聲明及初始化;

方法聲明及方法體;

}

class:表明其后聲明的是一個類。

extends:如果所聲明的類是從某一父類派生而來,那么,父類的名字應寫在extends之后

implements:l如果所聲明的類要實現某些接口,那么,接口的名字應寫在implements之后

修飾符:可以有多個,用來限定類的使用方式

public:表明此類為公有類

abstract:指明此類為抽象類

final:指明此類為終結類

先看一個鐘表類的例子:

public class Clock{      // 成員變量    int hour ;    int minute ;    int second ;   // 成員方法   public void setTime(int newH, int newM, int newS) {        hour = newH ;        minute = newM ;        second = news ;     }   public void showTime() {        System.out.PRintln(hour + ":" + minute + ":" + second);   }}

對象的聲明

格式: 類名 變量名

例如:Clock是已經聲明的類名,則下面語句聲明的變量aclock將用于存儲該類對象的引用:Clock aclock;

聲明一個引用變量時并沒有對象生成

對象的創建

生成實例的格式:

new <類名>()

例如: aclock=new Clock()

其作用是:

在內存中為此對象分配內存空間

返回對象的引用(reference ,相當于對象的存儲地址)

引用變量可以被賦以空值

例如:aclock=null;

數據成員

表示Java類的狀態,聲明數據成員必須給出變量名及其所屬的類型,同時還可以指定其他特性。在一個類中成員變量名是唯一的,數據成員的類型可以是Java中任意的數據類型(簡單類型,類,接口,數組)

分為實例變量和類變量

–聲明格式

[public | protected | private]

[static][ final][transient] [volatile]

變量數據類型 變量名1[=變量初值],

變量名2[=變量初值], &hellip; ;

–格式說明

public、protected、private 為訪問控制符

static指明這是一個靜態成員變量

final指明變量的值不能被修改

transient指明變量是臨時狀態

volatile指明變量是一個共享變量

類變量,也稱為靜態變量,聲明時需加static修飾符,不管類的對象有多少,類變量只存在一份,在整個類中只有一個值,類初始化的同時就被賦值

適用情況:

類中所有對象都相同的屬性

經常需要共享的數據

系統中用到的一些常量值

例:對于一個圓類的所有對象,計算圓的面積時,都需用到π的值,可在Circle類的聲明中增加一個類屬性PI
public class Circle {     static double PI = 3.14159265;     int radius; }public class ClassVariableTester {     public static void main(String args[]) {          Circle x = new Circle();           System.out.println(x.PI);          System.out.println(Circle.PI);          Circle.PI = 3.14;          System.out.println(x.PI);          System.out.println(Circle.PI);     } }

執行結果:

3.14159265

3.14159265

3.14

3.14

final修飾符

實例變量和類變量都可被聲明為final

final實例變量必須在每個構造方法結束之前賦初值,以保證使用之前會被初始化

final類變量必須在聲明的同時初始化

類方法,也稱為靜態方法,表示類中對象的共有行為,聲明時前面需加static修飾符,不能被聲明為抽象的,類方法可以在不建立對象的情況下用類名直接調用,也可用類實例調用
//將攝氏溫度(centigrade)轉換成華氏溫度(fahrenheit)//轉換公式為   fahrenheit = centigrade * 9 / 5 + 32//除了攝氏溫度值及公式中需要的常量值,此功能不依賴于具體的類實例的屬性值,因此可聲明為類方法//轉換方法centigradeToFahrenheit放在類Converter中public class Converter {      public static int centigradeToFahrenheit(int cent) {          return (cent * 9 / 5 + 32);        }  }//方法調用Converter.centigradeToFahrenheit(40);

get方法

功能是取得屬性變量的值,get方法名以“get”開頭,后面是實例變量的名字,一般具有以下格式:

public <fieldType> get<FieldName>() {

return <fieldName>;

}

對于實例變量radius,聲明其get方法如下:
public int getRadius(){   return radius;} 

set方法

功能是修改屬性變量的值,set方法名以“set”開頭,后面是實例變量的名字,一般具有以下格式:

public void set<FieldName>(<fieldType> <paramName>) {

<fieldName> = <paramName>;

}

聲明實例變量radius的set方法如下:
public void setRadius(int r){     radius = r;}

關鍵字this的使用

如果形式參數名與實例變量名相同,則需要在實例變量名之前加this關鍵字,否則系統會將實例變量當成形式參數。

在上面的set方法中,如果形式參數為radius,則需要在成員變量radius之前加上關鍵字this。代碼如下:

public void setRadius(int radius){     this.radius = radius;}
參考資料:

《java程序設計》--清華大學


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赫章县| 宁河县| 京山县| 启东市| 宜州市| 同德县| 泾阳县| 朔州市| 绥棱县| 沈阳市| 安阳市| 瓦房店市| 龙岩市| 三明市| 原阳县| 临潭县| 玉屏| 仙桃市| 抚顺县| 韶关市| 清徐县| 烟台市| 区。| 德庆县| 神农架林区| 广南县| 湟中县| 那坡县| 清苑县| 汉阴县| 北辰区| 澳门| 德江县| 麻城市| 安吉县| 永定县| 城口县| 东光县| 武义县| 原阳县| 临海市|