6.初識類和對象

<pre>

萬物皆對象

image

> 分類是人們認識世界的一個很自然的過程患朱,在日常生活中會不自覺地進行分類

身邊的對象

image

顧客

姓名—張浩

年齡—20

體重—60kg

操作:

購買商品

image

收銀員

員工號—10001

姓名—李明

部門—財務(wù)部

操作:

收款

打印賬單

對象的特征——屬性

屬性——對象具有的各種特征

每個對象的每個屬性都擁有特定值

例如:張浩和李明的年齡宿稀、姓名不一樣

image

對象的特征——方法(操作枫攀,行為)

方法——對象執(zhí)行的操作(通常會改變屬性的值)

image

> 對象:用來描述客觀事物的一個實體掰茶,由一組屬性和方法構(gòu)成

例子

image

屬性:

品牌:法拉利

型號:F360 Spider

顏色:黃色

價格:380萬元

方法:

發(fā)動

停止

加速

image

屬性:

顏色:白色

方法:

> 對象同時具有屬性和方法兩項特性
>
> 對象的屬性和方法通常被封裝在一起顷链,共同體現(xiàn)事物的特性阎毅, 二者相輔相承焚刚,不能分割

說一說教室里的對象

描述他們的屬性和方法

從對象抽象出“類”

抽取出下列對象的共同特征(屬性和方法)

image
image

> 類是模子,定義對象將會擁有的特征(屬性)和行為(方法)

類是對象的類型

不同于int類型:具有方法

  • 類是抽象的概念扇调,僅僅是模板

    比如說:“人”

  • 對象是一個你能夠看得到矿咕、摸得著的具體實體

    趙本山,劉德華狼钮,趙麗穎

image

> 所有Java程序都以類class為組織單元

關(guān)鍵字class定義自定義的數(shù)據(jù)類型

public class  類名 {
        //定義屬性部分
        屬性1的類型 屬性1;
        屬性2的類型 屬性2;
      …
        屬性n的類型 屬性n;
        //定義方法部分
        方法1;
        方法2;
        …
        方法m;
}

定義一個類的步驟

  1. 定義類名

  2. 編寫類的屬性

  3. 編寫類的方法

在不同城市的培訓(xùn)中心碳柱,會感受到相同的環(huán)境和教學(xué)氛圍,用類的思想輸出中心信息

image
public class School {
    String schoolName;      //中心名稱
    int classNumber;        //教室數(shù)目
    int labNumber;          //機房數(shù)目

    public void showCenter() {
        System.out.println(schoolName + "培訓(xùn)學(xué)員\n" + "配備:" 
            + classNumber + "教" + labNumber + "機");
    }
}

使用對象的步驟

創(chuàng)建對象

類名 對象名 = new 類名();

School center = new School();

引用對象成員:使用“.”進行以下操作

引用類的屬性:對象名.屬性

引用類的方法:對象名.方法名()

center.name = "北京中心";    //給name屬性賦值
center.showCenter();         //調(diào)用showCenter()方法

public class InitialSchool {
    public static void main(String[] args) {
        School center = new School();
        System.out.println("***初始化成員變量前***");
        center. showCenter();//看到什么效果熬芜?

        center.schoolName = "北京中心";     
        center.classNumber = 10;                
        center.labNumber = 10;              
        System.out.println("\n***初始化成員變量后***");
        center.showCenter()/看到什么效果莲镣?
    }
}

編寫學(xué)員類,輸出學(xué)員相關(guān)信息

編寫教員類涎拉,輸出教員相關(guān)信息

image

> 一個景區(qū)根據(jù)游人的年齡收取不同價格的門票瑞侮。請編寫游人類,根據(jù)年齡段(10歲到60歲之間20元鼓拧,否則免費)決定能夠購買的門票價格并輸出

image

package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// write your code here
JourneyPerson journeyPerson = new JourneyPerson();
while (true)
{
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入姓名半火,輸入n退出程序");
//創(chuàng)建一個游人類
//將用戶輸入的姓名,賦值給游人對象journeyPerson的名字屬性
journeyPerson.name = scanner.next();
if(journeyPerson.name.equals("n"))//代表用戶想退出程序
{
// 退出程序
break;
}
//將用戶輸入的年齡季俩,賦值給游人對象journeyPerson的年齡屬性
System.out.println("請輸入年齡");
journeyPerson.age = scanner.nextInt();

        //輸出該游人門票信息和個人信息showInfo
        journeyPerson.showInfo();
    }
    System.out.println("退出程序");
}

}
···package com.company;

  • Created by ttc on 17-12-25.
    public class JourneyPerson {
    String name;
    int age;
    public void showInfo()
    {
    String ticketInfo = "";
    if(age < 10 || age > 60)
    {
    ticketInfo = "門票免費";
    }
    else
    {
    ticketInfo = "門票價格為:20元";
    }
    System.out.println(name + "的年齡為:"+ age + ticketInfo);
    }
    }

類的方法

電動玩具獅子

屬性:

顏色:黃色

行為:

image

定義類的方法

public 返回值類型 方法名() {

//這里編寫方法的主體

}

兩種情況

  • 如果方法具有返回值钮糖,方法體中必須使用關(guān)鍵字return返回該值,返回值類型為該返回值的類型

    return 表達式酌住;

    作用: 跳出方法店归、返回結(jié)果

public class Student{
    String name = "張三";
    public String  getName(){
            return name;
    }
   //……
}

  • 如果方法沒有返回值,返回值類型為void
public class Student{
    String name = "張三";
    public void getName(){

    }
   //……
}

> 方法是個“黑匣子”(不必關(guān)注其內(nèi)部如何實現(xiàn)功能)赂韵,完成某個特定的應(yīng)用程序功能娱节,并返回結(jié)果
>
> 香腸加工廠

image

方法調(diào)用:執(zhí)行方法中包含的語句

對象名.方法名();

public class AutoLion {  
    String color = "黃色";  //顏色
    /*跑*/
    public void run(){
        System.out.println("正在以0.1米/秒的速度向前奔跑。");
     }
    /*叫*/
     public String bark(){
         String sound = "大聲吼叫" ; 
         return sound;
     } 
    /*獲得顏色*/
    public String getColor(){
         return color;
    }
    /*顯示獅子特性*/
    public String showLion(){
        return "這是一個" + getColor() + "的玩具獅子!";
    }
}

調(diào)試觀察

public class TestLion {
    public static void main(String[ ] args) {
           AutoLion lion = new AutoLion();
           System.out.println(lion.showLion());     
           lion.run();
           System.out.println(lion.bark());
     }
}

方法之間允許相互調(diào)用祭示,不需要知道方法的具體實現(xiàn)肄满,實現(xiàn)重用谴古,提高效率

image

常見錯誤

public class Student1 {
    public void  showInfo() {
        return  "我是一名學(xué)生";
        }
}

方法的返回值類型為void,方法中不能有return 返回值稠歉!

public class Student2 {
    public double getInfo() {
        double weight = 95.5;
        double height = 1.69;
        return weight, height;
        }
}

方法不能返回多個值掰担!

public class Student3 {
    public String showInfo() {

        public double getInfo() {
                double weight = 95.5;
                double height = 1.69;
                return weight;
            }
                return "我是一名學(xué)生";
        }
}

多個方法不能相互嵌套定義!

public class Student4 {
    int age = 20;
    if(age &lt; 20) {
        System.out.println("年齡不符合入學(xué)要求怒炸!");  
    }
    public void showInfo() {
        return "我是一名學(xué)生";
    }
}

不能在方法外部直接寫程序邏輯代碼带饱!

模擬骰子

public class Dice {
    int[] value = new int[6];

    //初始化
    public void init()
    {
        for(int i = 0; i &lt; 6; i++)
        {
            value[i] = i+1;
        }
    }

    //拋骰子
    public int throwDice()
    {
        //生成一個隨機數(shù)組下標(biāo)[0-6)之間的數(shù)
        int index = (int)(Math.random()*6);
        return value[index];
    }
}

測試類

package com.company;

/**
 * Created by ttc on 17-12-22.
 */
public class TestDice {
//    復(fù)用..
    public static void main(String[] args) {
        //用來計數(shù)1-6之間的數(shù)一共出現(xiàn)了幾次的一個數(shù)組
        int[] count = new int[7];

        Dice dice = new Dice();//創(chuàng)建 一個骰子對象(6個面都是0)
        dice.init();//初始化骰子對象,把6個面都賦上值
        //模擬拋600000次骰子
        for(int i = 0; i &lt; 60; i++)
        {
            int num = dice.throwDice();//本次骰子的點數(shù)(1-6)之間的數(shù)
            //把點數(shù)作為下標(biāo)阅羹,代入到count數(shù)組中勺疼,將count[num]對應(yīng)的值+1(記錄num出現(xiàn)的次數(shù))
            // count[num]當(dāng)前的值,保存著num已經(jīng)出現(xiàn)了多少次這個信息
            count[num]++;
//            System.out.println(num);
        }

        //最終對count數(shù)組遍歷捏鱼,
        for(int i = 1; i &lt; count.length; i++)
        {
            //count[i]里保存著i出現(xiàn)了多少次
            System.out.println(i+"出現(xiàn)了" +count[i]+"次");
        }

    }

}

> 從鍵盤接收三門課分數(shù)执庐,計算三門課的平均分和總成績,編寫成績計算類實現(xiàn)功能

  1. 創(chuàng)建類 ScoreCalc

  2. 編寫方法實現(xiàn)各功能

  3. 編寫測試類

變量的作用域

變量聲明的位置決定變量作用域

變量作用域確定可在程序中按變量名訪問該變量的區(qū)域

//…
for(int  a = 0; a &lt; 4; a++) {
     System.out.println ("hello" );
}
System.out.println ( a );
//…

成員變量和局部變量

誰能使用這些變量?

image

作用域不同

局部變量的作用域僅限于定義它的方法

成員變量的作用域在整個類內(nèi)部都是可見的

初始值不同

Java會給成員變量一個初始值

Java不會給局部變量賦予初始值

> 在同一個方法中导梆,不允許有同名局部變量,在不同的方法中轨淌,可以有同名局部變量

> 在同一個類中,成員變量和局部變量同名時看尼,局部變量具有更高的優(yōu)先級

public class Test {
     int score1 = 88;
     int score2 = 98;
      public void calcAvg() {
          int avg = (score1 + score2)/2;
      }    
      public void showAvg(){
         System.out.println("平均分是: " + avg);
     }
}

局部變量avg的作用域僅限于calcAvg()方法

面向?qū)ο缶幊?/h3>

> 輸入三門課的成績递鹉,計算并打印平均成績和總成績

public static void main(String[ ] args) {
            Scanner input = new Scanner(System.in);
            System.out.print("請輸入Java成績:");
            int java = input.nextInt();
            //……
            /*計算并顯示輸出*/
            int total = java + c + db;
            double avg = total / 3;
            System.out.print("總成績:" + total);
            System.out.print("\n平均分: " + avg);
}

ScoreCalc類 和 Test類

image

</pre>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市藏斩,隨后出現(xiàn)的幾起案子躏结,更是在濱河造成了極大的恐慌,老刑警劉巖灾茁,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窜觉,死亡現(xiàn)場離奇詭異,居然都是意外死亡北专,警方通過查閱死者的電腦和手機禀挫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拓颓,“玉大人语婴,你說我怎么就攤上這事∈荒溃” “怎么了砰左?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長场航。 經(jīng)常有香客問我缠导,道長,這世上最難降的妖魔是什么溉痢? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任僻造,我火速辦了婚禮憋他,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘髓削。我一直安慰自己竹挡,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布立膛。 她就那樣靜靜地躺著揪罕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宝泵。 梳的紋絲不亂的頭發(fā)上好啰,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機與錄音儿奶,去河邊找鬼坎怪。 笑死,一個胖子當(dāng)著我的面吹牛廓握,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嘁酿,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼隙券,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了闹司?” 一聲冷哼從身側(cè)響起娱仔,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎游桩,沒想到半個月后牲迫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡借卧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年盹憎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铐刘。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡陪每,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镰吵,到底是詐尸還是另有隱情檩禾,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布疤祭,位于F島的核電站盼产,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏勺馆。R本人自食惡果不足惜戏售,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一侨核、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蜈项,春花似錦芹关、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至跑芳,卻和暖如春轴总,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背博个。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工怀樟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盆佣。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓往堡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親共耍。 傳聞我的和親對象是個殘疾皇子虑灰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 配套視頻教程 本文B站配套視頻教程[https://www.bilibili.com/video/BV1fp4y1...
    __豆約翰__閱讀 773評論 4 7
  • 對象同時具有屬性和方法兩項特性 對象的屬性和方法通常被封裝在一起,共同體現(xiàn)事物的特性痹兜, 二者相輔相承穆咐,不能分割 類...
    唐英釧閱讀 323評論 0 0
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,010評論 6 13
  • 時下,流行買房投資的觀點字旭,好像房產(chǎn)是一個人價值的體現(xiàn)对湃,可是房奴不好當(dāng)啊遗淳! 與其當(dāng)個房奴拍柒,不如花錢投資自己的腦袋,持...
    在裝翅膀的豬閱讀 168評論 0 0
  • 我太帥了很無賴
    硬撐qaq閱讀 111評論 0 0