java第八章 抽象类和接口

抽象类和接口的特点:

相同点:抽象类和接口都不能被实例化

    抽象类和接口都可以有抽象方法

    子类必须重写其所有的抽象方法,除非子类也是抽象方法

不同点:抽象类中可以有普通方法,接口中只能有抽象方法(jdk1.8之前的版本)

    抽象类中可以有普通成员变量,接口中只能有静态常量

    抽象类中只能被单继承,接口可以被多实现

 

作业:

1、第一题:

 

package com.jiekou2;

//创建一个抽象的手机类
public abstract class HandSet {
    private String brand;
    private String type;
    
    public HandSet() {}
    public HandSet(String brand, String type){
        this.brand = brand;
        this.type = type;
    }    
    
    public String getBrand() {
        return brand;
    }
    public void setBrand(String brand) {
        this.brand = brand;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    
    //手机介绍
    public void showInfo() {
        System.out.println("这是一台"+brand+type);
    }
    //收发短信
    public abstract void sendMess();
    
    //打电话
    public abstract void call();
    
}

 

package com.jiekou2;

public class ZhinengPhone extends HandSet implements TakePhpto,NextWorKing,Playing {

    public ZhinengPhone() {}
    public ZhinengPhone(String brand,String type) {
        super(brand,type);
    }
    
    
    @Override
    public void playVideo(String name) {
        // TODO Auto-generated method stub
        System.out.println("播放视频《"+name+"》");
    }

    @Override
    public void nextWorking() {
        // TODO Auto-generated method stub
        System.out.println("上网");
    }

    @Override
    public void takePhotos() {
        // TODO Auto-generated method stub
        System.out.println("拍照");
    }

    @Override
    public void sendMess() {
        // TODO Auto-generated method stub
        System.out.println("发送文字+图片+视频的信息");
    }

    @Override
    public void call() {
        // TODO Auto-generated method stub
        System.out.println("视频通话");
    }

}

 

package com.jiekou2;

//普通手机类
public class CommonPhone  extends HandSet implements Playing{

    public CommonPhone() {}
    public CommonPhone(String brand,String type) {
        super(brand,type);
    }
    
    @Override
    public void playVideo(String name) {
        // TODO Auto-generated method stub
        System.out.println("播放音频:《"+name+"》");
    }

    @Override
    public void sendMess() {
        // TODO Auto-generated method stub
        System.out.println("发送文字短信");
    }

    @Override
    public void call() {
        // TODO Auto-generated method stub
        System.out.println("语音通话");
    }

}
package com.jiekou2;

//上网
public interface NextWorKing {
    void nextWorking();
}
package com.jiekou2;

//拍照
public interface TakePhpto {
    void takePhotos();
}
package com.jiekou2;

//播放
public interface Playing {
    void playVideo(String name);
}
package com.jiekou2;

public class Test {
    public static void main(String[] args) {
        CommonPhone common = new CommonPhone("诺基亚" ,"g110");
        common.call();
        common.sendMess();
        common.playVideo("钞票");
        common.showInfo();
        
        
        System.out.println("**********************************");
        ZhinengPhone zhi = new ZhinengPhone("华为" ,"p20");
        zhi.call();
        zhi.sendMess();
        zhi.playVideo("知否,知否");
        zhi.nextWorking();
        zhi.takePhotos();
        zhi.showInfo();
    }
}

 

2、第二题:

package com.cpu;

//定义一个CUP的接口
public interface CPU {
    public String type();
    public double zhuPin();
    
}
package com.cpu;

//定义一个品牌类,实现CPU接口
public class Type implements CPU {

    @Override
    public String type() {
        // TODO Auto-generated method stub
        return "Intel";
    }

    @Override
    public double zhuPin() {
        // TODO Auto-generated method stub
        return 3.8;
    }

}
package com.yingpan;

//定义一个硬盘接口
public interface YingPan {
    public String rongLiang();
}
package com.yingpan;


//定义一个硬盘2的类,实现硬盘接口
public class RongLiang2 implements YingPan {

    @Override
    public String rongLiang() {
        // TODO Auto-generated method stub
        return "3000GB";
    }

}
package com.neicun;

//定义一个内存接口
public interface NeiCun {
    public String rongLiang();
    
}
package com.neicun;

//定义一个容量类,实现内存接口
public class RongLiang implements NeiCun{

    @Override
    public String rongLiang() {
        // TODO Auto-generated method stub
        return "4GB";
    }
    
}
package com.computer;

import com.cpu.CPU;
import com.neicun.NeiCun;
import com.yingpan.YingPan;

//创建一个电脑类
public class Computer {

    private CPU cpu;
    private NeiCun neiCun;
    private YingPan yingPan;
    
    public CPU getCpu() {
        return cpu;
    }

    public void setCpu(CPU cpu) {
        this.cpu = cpu;
    }

    public NeiCun getNeiCun() {
        return neiCun;
    }

    public void setNeiCun(NeiCun neiCun) {
        this.neiCun = neiCun;
    }

    public YingPan getYingPan() {
        return yingPan;
    }

    public void setYingPan(YingPan yingPan) {
        this.yingPan = yingPan;
    }

    public void showInfo() {
        System.out.println("计算机的信息如下:");
        System.out.println("CPU的品牌是:"+cpu.type()+",主频是:"+cpu.zhuPin()+"GHz");
        System.out.println("硬盘容量是:"+yingPan.rongLiang());
        System.out.println("内存容量是:"+neiCun.rongLiang());
     }
}
package com.computer;

import com.cpu.CPU;
import com.cpu.Type;
import com.neicun.NeiCun;
import com.neicun.RongLiang;
import com.yingpan.RongLiang2;
import com.yingpan.YingPan;

//创建一个测试 
public class Test {

    public static void main(String[] args) {
        CPU type = new Type();
        NeiCun rongliang = new RongLiang();
        YingPan rongliang2 = new RongLiang2();
        Computer com = new Computer();
        
        com.setCpu(type);
        com.setYingPan(rongliang2);
        com.setNeiCun(rongliang);
        com.showInfo();
    }
}

 

 

posted @ 2019-02-18 21:05  陈小志  阅读(200)  评论(0编辑  收藏  举报