亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

Java基礎--面向對象4

2019-11-14 11:14:59
字體:
來源:轉載
供稿:網友

1.對象轉型(casting)

 一個基類的引用類型變量可以"指向"其子類的對象。

一個基類的引用不可以訪問其子類對象新增加的成員(屬性和方法)

可以使用引用變量    instanceof類名   來判斷該引用類型變量所"指向"的對象是否屬于該類或該類的子類

子類的對象可以當作基類的對象來使用稱作向上轉型(upcasting),反之成為向下轉型(downcasting)

public class Animal {    public String name;    Animal(String name) {        this.name = name;    }}public class Dog extends Animal{    public String furColor;    Dog(String n,String furColor) {        super(n);        this.furColor = furColor;    }}public class Cat extends Animal{    public String eyeColor;    Cat(String name,String eyeColor) {        super(name);        this.eyeColor = eyeColor;    }}public class TestCasting {    public static void main (String agrs[]){        Animal a  =new Animal("coco");        Dog d = new Dog("bigblack","black");        Cat c = new Cat("smallblue","blue");        System.out.PRintln(a instanceof Animal);        System.out.println(d instanceof Animal);        System.out.println(c instanceof Animal);        System.out.println(a instanceof Cat);        a = new Dog("bigyellow","yellow");        System.out.println(a.name);        System.out.println(a instanceof Animal);        System.out.println(a instanceof Dog);        Dog d1 = (Dog)a;        System.out.println(d1.furColor);    }}結果是:

true

true

true

false

bigyellow

true

true

yellow

針對a = new Dog("bigyellow","yellow");的解釋:

大框為Animal對象a

針對Dog d1 = (Dog)a;的解釋:

public class TestCasting {    public static void main (String agrs[]){        TestCasting test = new TestCasting();        Animal a  =new Animal("coco");        Dog d = new Dog("bigblack","black");        Cat c = new Cat("smallblue","blue");        test.f(a);test.f(d);test.f(c);                                 //一個基類的引用類型變量可以"指向"其子類的對象    }    public void f(Animal a){        System.out.println("name:" +a.name);        if(a instanceof Dog){            Dog dog =(Dog)a;            System.out.println("furColor:"+dog.furColor);        } else if(a instanceof Cat){            Cat cat =(Cat)a;            System.out.println("eyeColor:"+cat.eyeColor);        }    }}結果是:

name:coconame:bigblackfurColor:blackname:smallblueeyeColor:blue

2.動態綁定和多態

動態綁定是指“在執行期間”(而不是編譯期間)判斷所用對象的實際類型,根據其實際的類型調用其相應的方法。也就是說父類中的方法,在子類中進行了重寫,在編譯中調用了父類的方法,但是在實際的執行過程中要看,你實際new出來的對象是那個子類或者是父類,來執行相關類中的方法。

多態的條件:

摩托車和卡車繼承自car,繼承重寫后,測試類時 car mt = new 摩托車();

1.要有繼承   

2.要有重寫      

3.父類引用指向子類對象

public class Animal {    private String name;    Animal(String name) {        this.name = name;    }    public void enjoy() {        System.out.println("叫聲......");    }}public class Dog extends Animal {    private String furColor;    Dog(String n, String c) {        super(n);        furColor = c;    }    public void enjoy() {        System.out.println("狗叫聲......");    }}public class Cat extends Animal {    private String eyesColor;    Cat(String n, String c) {        super(n);        eyesColor = c;    }    public void enjoy() {        System.out.println("貓叫聲......");    }}public class Bird extends Animal{    Bird(){        super("bird");    }    public void enjoy() {        System.out.println("鳥叫聲......");    }}public class Lady {    private String name;    private Animal pet;    Lady(String name, Animal pet) {        this.name = name;        this.pet = pet;    }    public void myPetEnjoy() {        pet.enjoy();    }}public class Test {    public static void main(String args[]) {        Cat c = new Cat("catname", "blue");        Dog d = new Dog("dogname", "black");        Bird b = new Bird();        Lady l1 = new Lady("l1", c);                                        //new出來的Cat對象,執行時指向Cat的enjoy方法        Lady l2 = new Lady("l2", d);        Lady l3 = new Lady("l3", b);        l1.myPetEnjoy();        l2.myPetEnjoy();        l3.myPetEnjoy();    }}結果是:

貓叫聲......狗叫聲......鳥叫聲......

內存分析如下:

3.抽象類

用abstract關鍵字來修飾一個類時,這個類叫做抽象類;用abstract來修飾一個方法時,該方法叫做抽象方法。

含有抽象方法的類必須被聲明為抽象類,抽象類必須被繼承,抽象方法必須被重寫。

抽象類不能被實例化。

抽象方法只需聲明,而不需要實現。

有方法只需要定義不需要實現時,使用抽象,即是這個方法需要重寫時

對上述的程序作如下的修改來說明抽象類:

public abstract class Animal {    private String name;    Animal(String name) {        this.name = name;    }    public abstract void enjoy();}public class Dog extends Animal {    private String furColor;    Dog(String n, String c) {        super(n);        furColor = c;    }    public void enjoy() {        System.out.println("狗叫聲......");    }}public abstract class Cat extends Animal {    private String eyesColor;    Cat(String n, String c) {        super(n);        eyesColor = c;    }    public abstract void enjoy();}public class Bird extends Animal{    Bird(){        super("bird");    }    public void enjoy() {        System.out.println("鳥叫聲......");    }}public class Lady {    private String name;    private Animal pet;    Lady(String name, Animal pet) {        this.name = name;        this.pet = pet;    }    public void myPetEnjoy() {        pet.enjoy();    }}public class Test {    public static void main(String args[]) {        //Cat c = newCat("catname","blue");                     //由于Cat被定義為抽象類,所以不能被實例化        Dog d = new Dog("dogname", "black");        Bird b = new Bird();        //Lady l1 = new Lady("l1",c);        Lady l2 = new Lady("l2", d);        Lady l3 = new Lady("l3", b);        //l1.myPetEnjoy();        l2.myPetEnjoy();        l3.myPetEnjoy();    }}結果是:

狗叫聲......鳥叫聲......4.final關鍵字

final的變量的值不能夠被改變(final的成員變量,final的局部變量(形參))

final的方法不能夠被重寫,final的類不能被繼承

public void m(final int j){ j =9;}   不允許這樣,這樣定義說明在m方法內部不允許改變 j的值

5.接口

接口(interface)是抽象方法和常量值的定義集合

從本質上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實現

接口中聲明的屬性默認是public static final的,也只能是public static final的

接口中只能定義抽象方法,而且這些方法默認是public的,也只能是public的

接口可以繼承其他的接口,并添加新的屬性和抽象方法

多個無關的類可以實現同一個接口,一個類可以實現多個無關的接口

與繼承關系類似,接口與實現類之間存在多態性

定義java類的語法格式:

權限修飾符  class 名字 [extends 父類][implements  接口列表]{

public interface Singer {    public void sing();    public void sleep();}public interface Painter {    public void paint();    public void eat();    public void setName(String i);}public class Student implements Singer {    private String name;    Student(String name) {        this.name = name;    }    public void study() {        System.out.println("studying");    }    public void sing() {        System.out.println(this.name + " want to sing!");    }    public void sleep() {        System.out.println(this.name + " want tosleep more!");    }}public class Teacher implements Singer,Painter{    private String name;    public String getString() {        return name;    }    Teacher(String name) {        this.name = name;    }    public void setName(String name) {        this.name = name;    }    public void teacher() {        System.out.println("teachering");    }    public void sing() {        System.out.println(this.name + "want to sing!");    }    public void sleep() {        System.out.println(this.name + "want tosleep more!");    }    public void paint() {        System.out.println(this.name + "like painting!");    }    public void eat() {        System.out.println(this.name + "like eating!");    }}public class TestInterface {    public static void main(String agrs[]) {        Singer s1 = new Student("coco");        s1.sing();        s1.sleep();        Singer s2 = new Teacher("mimi");        s2.sing();        s2.sleep();        Painter p1 = (Painter) s2;        p1.setName("nini");        p1.paint();        p1.eat();    }}

結果是:

coco want to sing!

coco want tosleep more!mimi want to sing!mimi want tosleep more!nini like painting!nini like eating!

另外的,在main方法里添加一個

f(Singer s){

    s.sing();

                                 //只要實現了這個接口的任何一個類的對象都可以往該方法里傳

6.總結


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲性无码av在线| 欧美性猛交xxxx偷拍洗澡| 精品调教chinesegay| 亚洲欧美制服中文字幕| 国产一区二区三区在线看| 国产一区玩具在线观看| 97精品视频在线| 日韩免费av片在线观看| 欧美日韩激情网| 在线播放日韩精品| 国产亚洲欧洲在线| 91黑丝在线观看| 日韩欧美有码在线| 久久精品中文字幕免费mv| 久久久精品国产一区二区| 中文字幕精品一区二区精品| 色妞欧美日韩在线| 亲爱的老师9免费观看全集电视剧| 日韩av网址在线观看| 亚洲最大成人免费视频| 91久久久精品| 97视频免费观看| 成人av资源在线播放| 最近2019中文字幕mv免费看| 欧洲s码亚洲m码精品一区| 国产精品久久久久久久久| 91国产视频在线播放| 国产女人精品视频| 精品自在线视频| 国产精品露脸av在线| 欧美另类极品videosbest最新版本| 国产日韩欧美自拍| 久久艳片www.17c.com| 久久久久久一区二区三区| 国产一区二区三区在线视频| 久久久久久com| 国产精品爽黄69天堂a| 中文字幕亚洲综合久久| 亚洲女在线观看| 97精品伊人久久久大香线蕉| 欧美午夜性色大片在线观看| 成人欧美一区二区三区在线湿哒哒| 欧美日本啪啪无遮挡网站| 上原亚衣av一区二区三区| 91色p视频在线| 羞羞色国产精品| 日韩中文字幕在线视频| 亚洲专区国产精品| www.久久草.com| 国产精品中文久久久久久久| 国产精品第100页| 97国产精品视频人人做人人爱| 亚洲精品成人免费| 欧美激情视频网站| 91夜夜揉人人捏人人添红杏| 亚洲r级在线观看| 欧美高跟鞋交xxxxxhd| www.亚洲一二| 欧美另类极品videosbestfree| 97在线看免费观看视频在线观看| 欧美日本高清一区| 亚洲综合中文字幕在线观看| 日韩在线免费视频| 欧美精品国产精品日韩精品| 亚洲乱码国产乱码精品精天堂| 亚洲第一区第一页| 国产一区二区三区四区福利| 成人啪啪免费看| 国产一区二区三区直播精品电影| 中文字幕在线观看亚洲| 精品人伦一区二区三区蜜桃免费| 欧美激情在线有限公司| 国产成人福利夜色影视| 国产精品av在线| 日韩中文字幕在线视频播放| 97香蕉久久夜色精品国产| 日韩网站免费观看| 国产精品久久久久aaaa九色| 成人中文字幕+乱码+中文字幕| 亚洲香蕉伊综合在人在线视看| 欧美日韩美女在线观看| 国产精品永久免费| 欧美高跟鞋交xxxxxhd| 国产精品欧美日韩久久| 亚洲最大成人在线| 中文字幕日本欧美| 91免费在线视频网站| 欧美视频在线免费看| www.xxxx精品| 欧美日韩亚洲成人| 亚洲石原莉奈一区二区在线观看| 最近中文字幕2019免费| 日韩有码在线观看| 欧美精品video| 欧美成人午夜激情| 国产精品揄拍一区二区| 成年无码av片在线| 亚洲成人1234| 国产一区玩具在线观看| 992tv成人免费影院| 欧美激情视频播放| 中文字幕日韩在线观看| 欧美成人激情视频免费观看| 成人精品久久一区二区三区| 日韩av电影在线网| 国产z一区二区三区| 久久人人爽人人爽爽久久| 一本一本久久a久久精品牛牛影视| 午夜精品99久久免费| 国产精品激情av在线播放| 欧美性受xxxx黑人猛交| 欧美日韩一区二区精品| 日韩激情第一页| 国产精品久久久久久久久影视| 亚洲视频在线播放| 日韩美女激情视频| 亚洲欧美日韩一区二区在线| 国产69精品99久久久久久宅男| 亚洲人成绝费网站色www| 日韩免费看的电影电视剧大全| 高清一区二区三区日本久| 最近2019好看的中文字幕免费| 国产精品中文字幕久久久| 欧美性生交xxxxxdddd| 黄色一区二区在线| 欧美性色xo影院| 国产视频观看一区| 亚洲精品大尺度| 最近的2019中文字幕免费一页| 亚洲第一精品久久忘忧草社区| 成人久久久久久| 精品自在线视频| 亚洲国产精品一区二区三区| 成人精品久久av网站| 日韩精品极品毛片系列视频| 成人精品久久一区二区三区| 亚洲www在线| 中文字幕日韩综合av| 精品国产一区二区三区四区在线观看| 欧美成人免费视频| 久久国产精品久久久久久| 国产亚洲美女久久| 日韩av电影院| 亚洲精品国精品久久99热| 57pao成人国产永久免费| 国产精品视频yy9099| 色999日韩欧美国产| 国产精品爱啪在线线免费观看| 97在线视频免费看| 欧美电影免费观看高清| 久久精品国产99国产精品澳门| 日韩欧美一区视频| 日韩av日韩在线观看| 久久精品国产99国产精品澳门| 在线中文字幕日韩| 日韩hd视频在线观看| 亚洲午夜久久久久久久| 久久久久久久久久亚洲| 欧美日韩免费区域视频在线观看| 亚洲国内高清视频| 国产精品久久中文| 国产欧美日韩精品专区| 神马久久桃色视频| 亚洲人成电影网站|