面向?qū)ο笏枷?/h1>
1.1面向?qū)ο笏枷?/h2>
概述
概述
概述Java語言是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,而面向?qū)ο笏枷胧且环N程序設(shè)計(jì)思想,我們在面向?qū)ο笏枷氲闹敢?,使用Java語言去設(shè)計(jì)、開發(fā)計(jì)算機(jī)程序。這里的對象泛指現(xiàn)實(shí)中一切事物,每種事物都具備自己的屬性和行為。面向?qū)ο笏枷刖褪窃谟?jì)算機(jī)程序設(shè)計(jì)過程中,參照現(xiàn)實(shí)中事物,將事物的屬性特征、行為特征抽象出來,描述成計(jì)算機(jī)事件的設(shè)計(jì)思想。它區(qū)別于面向過程思想,強(qiáng)調(diào)的是通過調(diào)用對象的行為來實(shí)現(xiàn)功能,而不是自己一步一步的去操作實(shí)現(xiàn)。
舉例
洗衣服:面向過程:把衣服脫下來-->找一個盆-->放點(diǎn)洗衣粉-->加點(diǎn)水-->浸泡10分鐘-->揉一揉-->清洗衣服-->擰干-->晾起來
面向?qū)ο螅喊岩路撓聛?->打開全自動洗衣機(jī)-->扔衣服-->按鈕-->晾起來
區(qū)別:
- 面向過程:強(qiáng)調(diào)步驟。
- 面向?qū)ο螅簭?qiáng)調(diào)對象,這里的對象就是洗衣機(jī)。
特點(diǎn)
面向?qū)ο笏枷胧且环N更符合我們思考習(xí)慣的思想,它可以將復(fù)雜的事情簡單化,并將我們從執(zhí)行者變成了指揮者。面向?qū)ο蟮恼Z言中,包含了三大基本特征,即封裝、繼承和多態(tài)。
1.2類和對象
環(huán)顧周圍,你會發(fā)現(xiàn)很多對象,比如桌子,椅子,同學(xué),老師等。桌椅屬于辦公用品,師生都是人類。那么什么是類呢?什么是對象呢?
什么是類
- 類:是一組相關(guān)屬性和行為的集合??梢钥闯墒且活愂挛锏哪0?,使用事物的屬性特征和行為特征來描述該類事物。
現(xiàn)實(shí)中,描述一類事物:
- 屬性:就是該事物的狀態(tài)信息。
- 行為:就是該事物能夠做什么。
舉例:小貓。
屬性:名字、體重、年齡、顏色。
行為:走、跑、叫。
什么是對象
- 對象:是一類事物的具體體現(xiàn)。對象是類的一個實(shí)例(對象并不是找個男朋友),必然具備該類事物的屬性和行為。
現(xiàn)實(shí)中,一類事物的一個實(shí)例:一只小貓。
舉例:一只小貓。
- 屬性:tom、5kg、2years、yellow。行為:溜墻根走、蹦跶的跑、喵喵叫。
類與對象的關(guān)系
- 類是對一類事物的描述,是抽象的。
- 對象是一類事物的實(shí)例,是具體的。
- 類是對象的模板,對象是類的實(shí)體。
1.3類的定義
事物與類的對比
現(xiàn)實(shí)世界的一類事物:
屬性:事物的狀態(tài)信息。
行為:事物能夠做什么。
Java中用class描述事物也是如此:
成員變量:對應(yīng)事物的屬性
成員方法:對應(yīng)事物的行為
類的定義格式
public class Class Name{
//成員變量
//成員方法
}
- 定義類:就是定義類的成員,包括成員變量和成員方法。
- 成員變量:和以前定義變量幾乎是一樣的。只不過位置發(fā)生了改變。在類中,方法外。
- 成員方法:和以前定義方法幾乎是一樣的。只不過把static去掉,static的作用在面向?qū)ο蠛竺嬲n程中再詳細(xì)講解。
類的定義格式舉例:
public class Student{
//成員變量
String name;
//姓名
int age;
//年齡
//成員方法
//學(xué)習(xí)的方法
public void study(){
System.out.println("好好學(xué)習(xí),天天向上");
}
//吃飯的方法
public void eat(){
System.out.println("學(xué)習(xí)餓了要吃飯");
}
}
1.類對象的使用
對象使用的格式
類名 對象名 = new 類名();
使用對象訪問類中的成員:
對象名.成員變量;
對象名.成員方法();
對象的使用格式舉例:
public class Test01_Student{
public static void main(String[]args){
//創(chuàng)建對象格式:類名對象名=new類名();
Student s =new Student();
System.out.println("s:"+s);
//cn.itcast.Student@100363
//直接輸出成員變量值
System.out.println("姓名:"+s.name);//null
System.out.println("年齡:"+s.age);//0
System.out.println("‐‐‐‐‐‐‐‐‐‐");
//給成員變量賦值
s.name="趙麗穎";
s.age=18;
//再次輸出成員變量的值
System.out.println("姓名:"+s.name);//趙麗穎
System.out.println("年齡:"+s.age);//18
System.out.println("‐‐‐‐‐‐‐‐‐‐");
//調(diào)用成員方法
s.study();//"好好學(xué)習(xí),天天向上"
s.eat();//"學(xué)習(xí)餓了要吃飯"
}
}
成員變量的默認(rèn)值
| 數(shù)據(jù)類型 | 默認(rèn)值 | |
|---|---|---|
| 基本類型 | 整數(shù)(byte,short,int,long) | 0 |
| 浮點(diǎn)數(shù)(float,double) | 0.0 | |
| 字符(char) | '\u0000' | |
| 布爾(boolean) | false | |
| 引用類型 | 數(shù)組,類,接口 | null |
1.5類與對象的練習(xí)
-
定義手機(jī)類:
public class Phone{ //成員變量 String brand;//品牌 int price;//價格 String color;//顏色 //成員方法 //打電話 public void call(Stringname){ System.out.println("給"+name+"打電話"); } //發(fā)短信 public void send Message(){ System.out.println("群發(fā)短信"); } } -
定義測試類:
public class Test02Phone{ public static void main(String[]args){ //創(chuàng)建對象 Phone p=new Phone(); //輸出成員變量值 System.out.println("品牌:"+p.brand);//null System.out.println("價格:"+p.price);//0 System.out.println("顏色:"+p.color);//null System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐"); //給成員變量賦值 p.brand="錘子"; p.price=2999; p.color="棕色"; //再次輸出成員變量值 System.out.println("品牌:"+p.brand);//錘子 System.out.println("價格:"+p.price);//2999 System.out.println("顏色:"+p.color);//棕色 System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐"); //調(diào)用成員方法 p.call("紫霞"); p.sendMessage(); } }
封裝
2.1封裝概述
概述面向?qū)ο缶幊陶Z言是對客觀世界的模擬,客觀世界里成員變量都是隱藏在對象內(nèi)部的,外界無法直接操作和修改。封裝可以被認(rèn)為是一個保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被其他類隨意訪問。要訪問該類的數(shù)據(jù),必須通過指定的方式。適當(dāng)?shù)姆庋b可以讓代碼更容易理解與維護(hù),也加強(qiáng)了代碼的安全性。
原則
將屬性隱藏起來,若需要訪問某個屬性,提供公共方法對其訪問。
2.2封裝的步驟
- 使用private關(guān)鍵字來修飾成員變量。
- 對需要訪問的成員變量,提供對應(yīng)的一對getXxx方法、setXxx方法。
2.3封裝的操作-- private 關(guān)鍵字
private的含義
- private是一個權(quán)限修飾符,代表最小權(quán)限。
- 可以修飾成員變量和成員方法。
- 被private修飾后的成員變量和成員方法,只在本類中才能訪問。
private的使用格式
private 數(shù)據(jù)類型 變量名;
1.使用private修飾成員變量,代碼如下:
public class Student{
private String name;
private int age;
}
2.提供getXxx方法/setXxx方法,可以訪問成員變量,代碼如下:
public class Student{
private String name;
private int age;
public void setName(Stringn){
name = n;
}
public String getName(){
return name;
}
public void setAge(inta){
age = a;
}
public int getAge(){
return age;
}
}