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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Java: 面向?qū)ο蟪绦蛟O(shè)計(jì)(上)

2019-11-15 00:34:02
字體:
供稿:網(wǎng)友
java: 面向?qū)ο蟪绦蛟O(shè)計(jì)(上)

1. 類

類主要包含3個(gè)部分:

  • 類屬性:用來描述類本身所抽象出的事物的屬性
  • 類方法:用來描述這個(gè)被抽象出的事物可以做什么
  • 構(gòu)造方法:每個(gè)類都至少會(huì)有一個(gè)特殊的方法,該方法提供了創(chuàng)建類對(duì)象的初始化機(jī)制

類的定義:

【修飾符】 class 類名 【extends 父類名】 【implements 接口名】

{

  類成員變量的聲明;

  類方法聲明;

}

.java源文件結(jié)構(gòu):

Java程序的源文件是一個(gè)以“.java”結(jié)尾的文件,同時(shí)該文件中只能有一個(gè)類被聲明為public類,若存在被聲明為public的類時(shí),類的名字必須與“.java”源文件名相同。

在一個(gè)源文件中,可以包含三種頂層元素:package(包聲明)、import(類庫導(dǎo)入語句)、class(類聲明)。如果同時(shí)出現(xiàn),必須按照package、import、class的順序出現(xiàn)。

main()入口方法:

public static void main(String argv[])    {}

main()方法中的字符串?dāng)?shù)組arvg[]是用來從命令行接收用戶參數(shù)的。

采用命令行執(zhí)行Java程序的語句由四個(gè)部分組成:命令名,命令參數(shù)(是可選的),應(yīng)用程序的名稱(即源文件中的主類類名),用戶輸入的參數(shù)(多個(gè)參數(shù)之間用空格分隔)

訪問修飾符public、PRivate、protect、default

  • public:可以跨類訪問,而且可以跨包訪問
  • private:訪問權(quán)限限制最窄的修飾符。只能被該類的對(duì)象訪問,其子類不能訪問,更不允許跨包訪問
  • proctet:能被類本身的方法及子類方法訪問,即使子類在不同的包中也可以訪問
  • default:只允許在同一個(gè)包中進(jìn)行訪問

構(gòu)造方法:

構(gòu)造方法的名字和類的名字是相同的,并且沒有任何類型的返回值,在構(gòu)造方法前,只可以使用訪問修飾符public,private及protected。

如果一個(gè)類中沒有定義類的構(gòu)造方法,系統(tǒng)會(huì)自動(dòng)為這個(gè)類創(chuàng)建一個(gè)缺省的默認(rèn)構(gòu)造器,該構(gòu)造器參數(shù)及方法均為空。

參數(shù)的傳遞:

傳遞的參數(shù)共有如下兩種:

  • 基本類型參數(shù)所傳遞的都是基本數(shù)據(jù)類型,包括數(shù)值型、布爾型等。在這種情況下所有的參數(shù)傳遞都采用值傳遞的方式。也就是說,當(dāng)傳遞一個(gè)參數(shù)到方法中時(shí),方法獲得的只是該參數(shù)值的一個(gè)拷貝。因此,方法不會(huì)改變參數(shù)變量的值,只會(huì)使用該變量的值。
    • public class Example1 {        public static void add(int a, int b)    {        int c=a+b;        System.out.println("c="+c);        a=c;    }    public static void main(String[] args) {        int a=10;        int b=20;                add(a,b);        System.out.println("a="+a);    }}

      c=30a=10

  • 對(duì)象引用型參數(shù),方法中獲得的是該對(duì)象的內(nèi)存地址,因此方法可以改變?cè)搶?duì)象中的屬性,但是不能改變對(duì)象本身。
  • public class Example2 {        public static void change(String str, char ch[])    {        str="Changed";        ch[0]='C';    }    public static void main(String[] args) {        String s=new String("World");        char ch[]={'H','e','l','l','o'};                change(s,ch);        System.out.println(s+ " and "+ String.valueOf(ch));    }}

    World and Cello

成員方法重載與過載:

    • Overriding:是面向?qū)ο笳Z言的特性,只存在于父類和子類之間。當(dāng)父類中的一個(gè)方法在繼承它的子類中重新獲得定義時(shí),若該方法的方法名、參數(shù)、返回值類型均不變,只有方法體發(fā)生了變化時(shí),就稱子類的方法重載了父類的方法。
    • Overloading,是編程語言均有的特性,與面向?qū)ο鬅o關(guān),存在于同一個(gè)類中。指的是多個(gè)方法擁有同一個(gè)名字,每個(gè)方法都有一套唯一的、不同于其他同名方法的參數(shù)列表。
    • public class Example {    int a=10;    int b=20;    int c=30;        public Example()    {        System.out.println("a+b="+add(a,b));        System.out.println("a+b+c="+add(a,b,c));    }        public int add(int x, int y)    {        return x+y;    }        public int add(int x, int y, int z)    {        return x+y+z;    }    public static void main(String[] args) {        new Example();    }}

      a+b=30a+b+c=60

static靜態(tài)成員:

static關(guān)鍵字可以用來修飾成員變量、方法以及代碼模塊。使用static修飾過的變量、方法都稱之為靜態(tài)成員。靜態(tài)成員附屬于類本身,而不附屬于類的成員變量。

需要注意的是,靜態(tài)方法中不能直接訪問非靜態(tài)的成員變量。

public class StaticExample1 {        static int num=10;    public static void main(String[] args) {        System.out.println(StaticExample1.num);    }}
public class StaticExample2 {        public static void showString()    {        System.out.println("This is a static method.");    }    public static void main(String[] args) {        //不創(chuàng)建類的情況下,直接調(diào)用類中的靜態(tài)方法        StaticExample2.showString();    }}

final關(guān)鍵字:

final關(guān)鍵字可以用于類、方法、變量前,用來表示該關(guān)鍵字所修飾的類、方法、變量具有不可變的特性。

  • final關(guān)鍵字用于基本數(shù)據(jù)類型變量前,這時(shí)表面該關(guān)鍵字修飾的變量是一個(gè)常量,在定義后,該變量的值就不能再被改變,同時(shí)在定義時(shí)必須被初始化
  • final關(guān)鍵字用于方法聲明前,被final修飾的方法被稱為最終方法,該方法只能被調(diào)用,不能被重載,但是可以被過載
  • final關(guān)鍵字用于類名前,final關(guān)鍵字修飾的類被稱為最終類,該類不能被其他類繼承
public class FinAlexample {    static final double pie=3.14;        public static void circularityArea(String r)    {        double radius=Double.valueOf(r).doubleValue();        System.out.println("The circularity's area is: "+ pie*radius*radius);    }        public static void circularityPerimeter(String r)    {        double radius=Double.valueOf(r).doubleValue();        System.out.println("The circularity's area is: "+ pie*radius*2);    }    public static void main(String[] args) {        if(args.length!=1)        {            System.out.println("Error!");            System.exit(0);        }                System.out.println("The circularity's radius is: "+args[0]);                circularityArea(args[0]);        circularityPerimeter(args[0]);    }}

判斷對(duì)象所屬類:

  • 獲取對(duì)象所屬類的名字:String name = 對(duì)象名.getClass().getName();
  • 使用instanceof運(yùn)算符的語法格式: boolean bool = 對(duì)象名 instanceof 類名;

實(shí)戰(zhàn)練習(xí):

簡單模擬一個(gè)商店客戶折扣卡的功能,自定義Customer類用來保存某個(gè)商店中的客戶的折扣卡信息。在主類CustomerDemo中,創(chuàng)建Customer類的一個(gè)數(shù)組對(duì)象,該數(shù)據(jù)對(duì)象中包含了3個(gè)Customer對(duì)象,用來保存3個(gè)不同的消費(fèi)者各自持有的折扣卡信息。通過這3個(gè)對(duì)象,可以根據(jù)用戶消費(fèi)的金額來改變用戶在本店中所能享受的折扣價(jià)格。

public class CustomerDemo {        Customer customer[] = new Customer[3];        public CustomerDemo()    {        customer[0]=new Customer("c001", "wangxyw","BeiJing","wangxyue@cn.ibm.com");        customer[1]=new Customer("c002", "Xu Quan", "ShangHai", "chunticha@yahoo,com");        customer[2]=new Customer("c003", "Xu Guang Yang", "BeiJing", "xugy@hotmail.com");                customer[0].buy(2800.00);        customer[0].setDiscount();                customer[1].buy(1688.00);        customer[1].setDiscount();                customer[2].buy(980.00);        customer[2].setDiscount();                for(int i=0; i<customer.length;i++)        {            System.out.println("customer[" + i + "]");            System.out.println("CardID: "+customer[i].getCardID());            System.out.println("name: "+ customer[i].getName());            System.out.println("cost: "+ customer[i].getCost());            System.out.println("discount: "+ customer[i].getDiscount()*10);            System.out.println("address:" + customer[i].getAddress());            System.out.println("email:" + customer[i].getEmail()+ "/n");        }                    }    public static void main(String[] args) {        new CustomerDemo();    }}class Customer{    private String cardID;    private String name;    private double cost=0;    private String address;    private String email;    private double discount = 1;        public Customer(String id, String name, String add, String email)    {        cardID=id;        this.name=name;        address=add;        this.email=email;    }        //用于購買商品后,增加用戶消費(fèi)值    public void buy(double cost)    {        this.cost+=cost;    }        //根據(jù)用戶的消費(fèi)額度來改變用戶所能享受的折扣    public void setDiscount()    {        if(cost>2000.00)            discount-=0.1;        else if(cost>1000.00)            discount-=0.05;    }        //用于獲取和設(shè)置用戶地址的方法    public String getAddress()    {        return address;    }    public void setAddress(String address)    {        this.address=address;    }        //用于獲取和設(shè)置用戶卡號(hào)的方法    public String getCardID()    {        return cardID;    }    public void setCardID(String cardID)    {        this.cardID=cardID;    }        //用于獲取用戶消費(fèi)金額的方法    public double getCost()    {        return cost;    }        //用于獲取用戶的折扣值得方法    public double getDiscount()    {        return discount;    }        //用于獲取和設(shè)置用戶信箱地址的方法    public String getEmail()    {        return email;    }    public void setEmail(String email)    {        this.email=email;    }        //用于獲取和設(shè)置用戶名的方法    public String getName()    {        return name;    }    public void setName(String name)    {        this.name=name;    }}

customer[0]CardID: c001name: wangxywcost: 2800.0discount: 9.0address:BeiJingemail:wangxyue@cn.ibm.com

customer[1]CardID: c002name: Xu Quancost: 1688.0discount: 9.5address:ShangHaiemail:chunticha@yahoo,com

customer[2]CardID: c003name: Xu Guang Yangcost: 980.0discount: 10.0address:BeiJingemail:xugy@hotmail.com


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长白| 闵行区| 湘潭县| 封开县| 古蔺县| 通榆县| 襄汾县| 龙陵县| 博罗县| 宣汉县| 肃南| 武邑县| 巩义市| 凤庆县| 遵化市| 锦州市| 绥滨县| 富锦市| 大连市| 阿图什市| 寻甸| 巫溪县| 兴隆县| 阳江市| 怀仁县| 菏泽市| 无极县| 平昌县| 文山县| 越西县| 福建省| 丘北县| 成安县| 京山县| 岳池县| 屯留县| 密山市| 淳安县| 罗甸县| 如皋市| 浠水县|