欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

抽象類&接口-創(chuàng)新互聯(lián)

1.抽象類 1.1抽象類的概述(理解)

當(dāng)我們?cè)谧鲎宇惞残怨δ艹槿r(shí),有些方法在父類中并沒有具體的體現(xiàn),這個(gè)時(shí)候就需要抽象類了!

湘東ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!

在Java中,一個(gè)沒有方法體的方法應(yīng)該定義為抽象方法,而類中如果有抽象方法,該類必須定義為抽象類!

1.2抽象類的特點(diǎn)(記憶)
  • 抽象類和抽象方法必須使用 abstract 關(guān)鍵字修飾

//抽象類的定義
public abstract class 類名 {}

//抽象方法的定義
public abstract void eat();
  • 抽象類中不一定有抽象方法,有抽象方法的類一定是抽象類

  • 抽象類不能實(shí)例化

抽象類如何實(shí)例化呢?參照多態(tài)的方式,通過子類對(duì)象實(shí)例化,這叫抽象類多態(tài)

  • 抽象類的子類

要么重寫抽象類中的所有抽象方法

要么是抽象類

1.3抽象類的成員特點(diǎn)(記憶)
  • 成員的特點(diǎn)

  • 成員變量

  • 既可以是變量

  • 也可以是常量

  • 構(gòu)造方法

  • 空參構(gòu)造

  • 有參構(gòu)造

  • 成員方法

  • 抽象方法

  • 普通方法

  • 代碼演示

  • 動(dòng)物類

public abstract class Animal {

    private int age = 20;
    private final String city = "北京";

    public Animal() {}

    public Animal(int age) {
        this.age = age;
    }


    public void show() {
        age = 40;
        System.out.println(age);
//        city = "上海";
        System.out.println(city);
    }

    public abstract void eat();

}
  • 貓類

public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("貓吃魚");
    }
}
  • 測試類

public class AnimalDemo {
    public static void main(String[] args) {
        Animal a = new Cat();
        a.eat();
        a.show();
    }
}
1.4抽象類的案例(應(yīng)用)
  • 案例需求

請(qǐng)采用抽象類的思想實(shí)現(xiàn)貓和狗的案例,并在測試類中進(jìn)行測試

  • 代碼實(shí)現(xiàn)

  • 動(dòng)物類

public abstract class Animal {
    private String name;
    private int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public abstract void eat();
}
  • 貓類

public class Cat extends Animal {

    public Cat() {
    }

    public Cat(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("貓吃魚");
    }
}
  • 狗類

public class Dog extends Animal {

    public Dog() {
    }

    public Dog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("狗吃骨頭");
    }
}
  • 測試類

public class AnimalDemo {
    public static void main(String[] args) {
        //創(chuàng)建對(duì)象,按照多態(tài)的方式
        Animal a = new Cat();
        a.setName("加菲");
        a.setAge(5);
        System.out.println(a.getName()+","+a.getAge());
        a.eat();
        System.out.println("--------");

        a = new Cat("加菲",5);
        System.out.println(a.getName()+","+a.getAge());
        a.eat();
    }
}
2.接口 2.1接口的概述(理解)

接口就是一種公共的規(guī)范標(biāo)準(zhǔn),只要符合規(guī)范標(biāo)準(zhǔn),大家都可以通用。

Java中的接口更多的體現(xiàn)在對(duì)行為的抽象!

2.2接口的特點(diǎn)(記憶)
  • 接口用關(guān)鍵字interface修飾

public interface 接口名 {}
  • 類實(shí)現(xiàn)接口用implements表示

public class 類名 implements 接口名 {}
  • 接口不能實(shí)例化

接口如何實(shí)例化呢?參照多態(tài)的方式,通過實(shí)現(xiàn)類對(duì)象實(shí)例化,這叫接口多態(tài)。

多態(tài)的形式:具體類多態(tài),抽象類多態(tài),接口多態(tài)。

  • 接口的子類

要么重寫接口中的所有抽象方法

要么子類也是接口

2.3接口的成員特點(diǎn)(記憶)
  • 成員特點(diǎn)

  • 成員變量

只能是常量

默認(rèn)修飾符:public static final

  • 構(gòu)造方法

沒有,因?yàn)榻涌谥饕菙U(kuò)展功能的,而沒有具體存在

  • 成員方法

只能是抽象方法

默認(rèn)修飾符:public abstract

關(guān)于接口中的方法,JDK8和JDK9中有一些新特性,后面再講解

  • 代碼演示

  • 接口

public interface Inter {
    public int num = 10;
    public final int num2 = 20;
//    public static final int num3 = 30;
    int num3 = 30;

//    public Inter() {}

//    public void show() {}

    public abstract void method();
    void show();
}
  • 實(shí)現(xiàn)類

public class InterImpl extends Object implements Inter {
    public InterImpl() {
        super();
    }

    @Override
    public void method() {
        System.out.println("method");
    }

    @Override
    public void show() {
        System.out.println("show");
    }
}
  • 測試類

public class InterfaceDemo {
    public static void main(String[] args) {
        Inter i = new InterImpl();
//        i.num = 20;
        System.out.println(i.num);
//        i.num2 = 40;
        System.out.println(i.num2);
        System.out.println(Inter.num);
    }
}
2.4接口的案例(應(yīng)用)
  • 案例需求

對(duì)貓和狗進(jìn)行訓(xùn)練,他們就可以跳高了,這里加入跳高功能。

請(qǐng)采用抽象類和接口來實(shí)現(xiàn)貓狗案例,并在測試類中進(jìn)行測試。

  • 代碼實(shí)現(xiàn)

  • 動(dòng)物類

public abstract class Animal {
    private String name;
    private int age;

    public Animal() {
    }

    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public abstract void eat();
}
  • 跳高接口

public interface Jumpping {
    public abstract void jump();
}
  • 貓類

public class Cat extends Animal implements Jumpping {

    public Cat() {
    }

    public Cat(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("貓吃魚");
    }

    @Override
    public void jump() {
        System.out.println("貓可以跳高了");
    }
}
  • 測試類

public class AnimalDemo {
    public static void main(String[] args) {
        //創(chuàng)建對(duì)象,調(diào)用方法 接口多態(tài)
        Jumpping j = new Cat();
        j.jump();
        System.out.println("--------");

        // 抽象類多態(tài)
        Animal a = new Cat();
        a.setName("加菲");
        a.setAge(5);
        System.out.println(a.getName()+","+a.getAge());
        a.eat();
//        a.jump();

        a = new Cat("加菲",5);
        System.out.println(a.getName()+","+a.getAge());
        a.eat();
        System.out.println("--------");

        // 使用具體的子類和實(shí)現(xiàn)類
        Cat c = new Cat();
        c.setName("加菲");
        c.setAge(5);
        System.out.println(c.getName()+","+c.getAge());
        c.eat();
        c.jump();
    }
}
2.5類和接口的關(guān)系(記憶)
  • 類與類的關(guān)系

繼承關(guān)系,只能單繼承,但是可以多層繼承

  • 類與接口的關(guān)系

實(shí)現(xiàn)關(guān)系,可以單實(shí)現(xiàn),也可以多實(shí)現(xiàn),還可以在繼承一個(gè)類的同時(shí)實(shí)現(xiàn)多個(gè)接口

  • 接口與接口的關(guān)系

繼承關(guān)系,可以單繼承,也可以多繼承

2.6抽象類和接口的區(qū)別(記憶)
  • 成員區(qū)別

  • 抽象類

變量,常量;有構(gòu)造方法;有抽象方法,也有非抽象方法

  • 接口

常量;抽象方法

  • 關(guān)系區(qū)別

  • 類與類

繼承,單繼承

  • 類與接口

實(shí)現(xiàn),可以單實(shí)現(xiàn),也可以多實(shí)現(xiàn)

  • 接口與接口

繼承,單繼承,多繼承

  • 設(shè)計(jì)理念區(qū)別

  • 抽象類

對(duì)類抽象,包括屬性、行為

  • 接口

對(duì)行為抽象,主要是行為

3.綜合案例 3.1案例需求(理解)

我們現(xiàn)在有乒乓球運(yùn)動(dòng)員和籃球運(yùn)動(dòng)員,乒乓球教練和籃球教練。

為了出國交流,跟乒乓球相關(guān)的人員都需要學(xué)習(xí)英語。

請(qǐng)用所學(xué)知識(shí)分析,這個(gè)案例中有哪些具體類,哪些抽象類,哪些接口,并用代碼實(shí)現(xiàn)。

3.2代碼實(shí)現(xiàn)(應(yīng)用)
  • 抽象人類

public abstract class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public abstract void eat();
}
  • 抽象運(yùn)動(dòng)員類

public abstract class Player extends Person {
    public Player() {
    }

    public Player(String name, int age) {
        super(name, age);
    }

    public abstract void study();
}
  • 抽象教練類

public abstract class Coach extends Person {
    public Coach() {
    }

    public Coach(String name, int age) {
        super(name, age);
    }

    public abstract void teach();
}
  • 學(xué)英語接口

public interface SpeakEnglish {
    public abstract void speak();
}
  • 籃球教練

public class BasketballCoach extends Coach {
    public BasketballCoach() {
    }

    public BasketballCoach(String name, int age) {
        super(name, age);
    }

    @Override
    public void teach() {
        System.out.println("籃球教練教如何運(yùn)球和投籃");
    }

    @Override
    public void eat() {
        System.out.println("籃球教練吃羊肉,喝羊奶");
    }
}
  • 乒乓球教練

public class PingPangCoach extends Coach implements SpeakEnglish {

    public PingPangCoach() {
    }

    public PingPangCoach(String name, int age) {
        super(name, age);
    }

    @Override
    public void teach() {
        System.out.println("乒乓球教練教如何發(fā)球和接球");
    }

    @Override
    public void eat() {
        System.out.println("乒乓球教練吃小白菜,喝大米粥");
    }

    @Override
    public void speak() {
        System.out.println("乒乓球教練說英語");
    }
}
  • 乒乓球運(yùn)動(dòng)員

public class PingPangPlayer extends Player implements SpeakEnglish {

    public PingPangPlayer() {
    }

    public PingPangPlayer(String name, int age) {
        super(name, age);
    }

    @Override
    public void study() {
        System.out.println("乒乓球運(yùn)動(dòng)員學(xué)習(xí)如何發(fā)球和接球");
    }

    @Override
    public void eat() {
        System.out.println("乒乓球運(yùn)動(dòng)員吃大白菜,喝小米粥");
    }

    @Override
    public void speak() {
        System.out.println("乒乓球運(yùn)動(dòng)員說英語");
    }
}
  • 籃球運(yùn)動(dòng)員

public class BasketballPlayer extends Player {

    public BasketballPlayer() {
    }

    public BasketballPlayer(String name, int age) {
        super(name, age);
    }

    @Override
    public void study() {
        System.out.println("籃球運(yùn)動(dòng)員學(xué)習(xí)如何運(yùn)球和投籃");
    }

    @Override
    public void eat() {
        System.out.println("籃球運(yùn)動(dòng)員吃牛肉,喝牛奶");
    }
}
4. 參數(shù)傳遞 4.1 類名作為形參和返回值(應(yīng)用)
  • 1、類名作為方法的形參

方法的形參是類名,其實(shí)需要的是該類的對(duì)象

實(shí)際傳遞的是該對(duì)象的【地址值】

  • 2、類名作為方法的返回值

方法的返回值是類名,其實(shí)返回的是該類的對(duì)象

實(shí)際傳遞的,也是該對(duì)象的【地址值】

  • 示例代碼:

class Cat {
    public void eat() {
        System.out.println("貓吃魚");
    }
}
class CatOperator {
    public void useCat(Cat c) { //Cat c = new Cat();
        c.eat();
    }
    public Cat getCat() {
        Cat c = new Cat();
        return c;
    }
}
public class CatDemo {
    public static void main(String[] args) {
        //創(chuàng)建操作類對(duì)象,并調(diào)用方法
        CatOperator co = new CatOperator();
        Cat c = new Cat();
        co.useCat(c);

        Cat c2 = co.getCat(); //new Cat()
        c2.eat();
    }
}
4.2 抽象類作為形參和返回值(理解)
  • 抽象類作為形參和返回值

  • 方法的形參是抽象類名,其實(shí)需要的是該抽象類的子類對(duì)象

  • 方法的返回值是抽象類名,其實(shí)返回的是該抽象類的子類對(duì)象

  • 示例代碼:

abstract class Animal {
    public abstract void eat();
}
class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("貓吃魚");
    }
}
class AnimalOperator {
    public void useAnimal(Animal a) { //Animal a = new Cat();
        a.eat();
    }
    public Animal getAnimal() {
        Animal a = new Cat();
        return a;
    }
}
public class AnimalDemo {
    public static void main(String[] args) {
        //創(chuàng)建操作類對(duì)象,并調(diào)用方法
        AnimalOperator ao = new AnimalOperator();
        Animal a = new Cat();
        ao.useAnimal(a);

        Animal a2 = ao.getAnimal(); //new Cat()
        a2.eat();
    }
}
4.3 接口名作為形參和返回值(理解)
  • 接口作為形參和返回值

  • 方法的形參是接口名,其實(shí)需要的是該接口的實(shí)現(xiàn)類對(duì)象

  • 方法的返回值是接口名,其實(shí)返回的是該接口的實(shí)現(xiàn)類對(duì)象

  • 示例代碼:

interface Jumpping {
    void jump();
}
class JumppingOperator {
    public void useJumpping(Jumpping j) { //Jumpping j = new Cat();
        j.jump();
    }
    public Jumpping getJumpping() {
        Jumpping j = new Cat();
        return j;
    }
}
class Cat implements Jumpping {
    @Override
    public void jump() {
        System.out.println("貓可以跳高了");
    }
}
public class JumppingDemo {
    public static void main(String[] args) {
        //創(chuàng)建操作類對(duì)象,并調(diào)用方法
        JumppingOperator jo = new JumppingOperator();
        Jumpping j = new Cat();
        jo.useJumpping(j);

        Jumpping j2 = jo.getJumpping(); //new Cat()
        j2.jump();
    }
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站名稱:抽象類&接口-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://aaarwkj.com/article0/doppio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、軟件開發(fā)、小程序開發(fā)、標(biāo)簽優(yōu)化、云服務(wù)器外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
欧美性生活真实的视频| 五月天亚洲综合小说网| 亚洲一区二区日韩人妻| 日本黄色美女日本黄色| 色吊丝日韩在线观看| 免费精品99久久久国产| 日韩中文字幕在线有码| 五月天丁香婷婷狠狠狠| 久久亚洲中文字幕精品熟女| 亚洲成人乱码一区二区| 亚洲国产欲色有一二欲色| 一区二区三区福利视频在线观看| 国产一区二区成人精品| 国产视频传媒一区二区| 熟妇人妻久久中文字幕麻豆网| 欧美成人精品视频在线不卡| 日韩亚洲av一区二区| 天堂av在线网址观看| 美女视频一区二区三区在线观看| 黄色av免费无毒网站| 国产精品一级性生活片| 国产精品日韩伦理一区二区| 国产精品一区波多野结衣| 白白在线观看网站看看亚洲| 久久国产精品一二三区| 熟妇丰满多毛的大阴户| 日韩中字伦理熟妇人妻| 日本人妻久久中文字幕| 国产亚洲精品久在线| 日本免费中文字幕在线| 亚洲华人在线免费视频| 熟妇一区二区三区av| 国产精品久久久av大片| 国产成人综合亚洲乱淫.| 国产午夜在线观看免费视频| 色婷婷国产精品久久包臀| 青青草国产成人自拍视频在线观看 | 国产二区三区在线播放| 欧美精品在,欧美一区二区| 中文字幕av在线有码| 日韩专区亚洲专区欧美专区|