2019-2-18 接口作业

第一题:接口实现普通手机和智能手机部分功能

父类手机类:

package com.handset;
/*
 * 父类手机类
 */
public  abstract class Handset {
    String  brand;  // 手机型号
    String  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 abstract void  faxx();   //  发信息方法
    public abstract void tdh();     //  通电话方法
}
package com.handset;
/*
 *播放功能
 */
public interface bofang {
    public void bf();
}
package com.handset;
/*
 * 连接网络功能
 */
public interface shangwang {
    public void sw();
}
package com.handset;
/*
 * 照相功能
 */
public interface zhaoxiang {
    public void paizhao();
}

 

智能手机类继承父类手机:

package com.handset;
/*
 * 智能手机类
 */
public class AptotudeHandset extends Handset implements zhaoxiang, shangwang, bofang {

    @Override
    public void bf() {
        // TODO Auto-generated method stub
        System.out.println("开始播放音乐《》");
    }

    @Override
    public void sw() {
        System.out.println("连接4G网络");

    }

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

    }

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

    @Override
    public void tdh() {
        // TODO Auto-generated method stub
        System.out.println("开启视频通话");
    }
    
    public AptotudeHandset(String  brand,String  type) {
        this.brand=brand;
        this.type=type;
    }
    public AptotudeHandset() {}
}

普通手机类继承父类手机类:

package com.handset;
/*
 * 普通手机类
 */
public class CommonHandset extends Handset implements bofang {

    @Override
    public void bf() {
        System.out.println("播放音乐!");

    }

    @Override
    public void faxx() {
        System.out.println("发了条短信");
        
    }

    @Override
    public void tdh() {
        // TODO Auto-generated method stub
        System.out.println("开始通话");
    }
    public CommonHandset(String  brand,String  type) {
        this.brand=brand;
        this.type=type;
    }
    public CommonHandset() {}
}
package com.handset;
/*
 * 测试类
 */
public class Test {

    public static void main(String[] args) {
        AptotudeHandset  sj1 = new AptotudeHandset("6s","苹果");
        CommonHandset  sj2 = new CommonHandset("老人机","诺基亚");
        System.out.println("这是一台"+sj1.type+"手机"+"型号是"+sj1.brand);
        sj1.sw();
        sj1.bf();
        sj1.paizhao();
        sj1.faxx();
        sj1.tdh();
        System.out.println("________________________________");
        System.out.println("这是一台"+sj2.type+"手机"+"型号是"+sj2.brand);
        sj2.bf();
        sj2.faxx();
        sj2.tdh();
        
    }

}

输出结果图:

第二题:

package com.computer;
/*
 * CPU接口
 */
public interface CPU {
    public String pp();
    public String zp();
    
}
package com.computer;
/*
 * Ems接口
 */
public interface Ems {
    public String Ems();
}
package com.computer;
/*
 * HardDisk 接口
 */
public interface HardDisk {
    public String hard();
}
package com.computer;
/*
 *创建CpuPp类继承CPU接口
 */
public class CpuPp implements CPU {

    public String pp() {
        return"CPU的品牌是Intel";
    }

    public String zp() {
        return "主频是3.8GHz";
    }

}
package com.computer;
/*
 * 创建Emss类继承Ems接口
 */
public class Emss implements Ems {

    public String Ems() {
        return "3000GB";
    }

}
package com.computer;
/*
 * 创建HardDisks类继承HardDisk接口
 */
public class HardDisks implements HardDisk {

    public String hard() {
        return"8G";
    }

}
package com.computer;
/*
 * 计算机类
 */
public class Computer{
    private CPU CpuPp;   //  CPU接口作为类型创建属性
    private Ems Emss;     //   Ems接口作为类型创建属性
    private HardDisk HD;  //  HardDisk接口作为类型创建属性
    /**
     * 组装电脑方法
     */
    public void zhuzhang() {
        System.out.println("计算机的信息如下");
        System.out.println(CpuPp.pp()+CpuPp.zp());
        System.out.println("硬盘的容量是"+Emss.Ems());
        System.out.println("内存的容量是:"+HD.hard());
    }

    public CPU getCpuPp() {
        return CpuPp;
    }

    public void setCpuPp(CPU cpuPp) {
        CpuPp = cpuPp;
    }

    public Ems getEmss() {
        return Emss;
    }

    public void setEmss(Ems emss) {
        Emss = emss;
    }

    public HardDisk getHD() {
        return HD;
    }

    public void setHD(HardDisk hD) {
        HD = hD;
    }

    
}
package com.computer;
/*
 * 测试类
 */
public class Test {

    public static void main(String[] args) {
        /**
         * 创建计算机对象
         */
        Computer  co  = new Computer();
        /**
         * 多态创建CpuPp对象
         */
        CPU cpu = new CpuPp();
        /**
         * 多态创建Ems对象
         */
        Ems em = new Emss();
        /**
         * 多态创建HardDisk对象
         */
        HardDisk hd = new HardDisks();
        
        //给属性CpuPp 赋值        不赋值的话会出现空值异常
        co.setCpuPp(cpu);
        //给Emss属性 赋值        不赋值的话会出现空值异常
        co.setEmss(em);
        //给HD属性 赋值        不赋值的话会出现空值异常
        co.setHD(hd);
        //调用计算机组装方法
        co.zhuzhang();
    }

}

输出结果图:

 

代码下载地址:

链接:https://pan.baidu.com/s/1uAt4PDgIb-DYYrST3H4D2Q
提取码:wqrd

 

 

 

课堂笔记:

接口语法:
has-a
有什么功能的时候就使用接口
public interface 接口名{}
使用接口语法:
public 类名 implements 接口名{}

接口除了成员变量和抽象方法不能有其他的

抽象类和接口的特点:
相同点:抽象类和接口都不能被实列化对象
抽象类和接口都可以有抽象方法
子类必须重写其所有的抽象方法,除非其子类也是抽象类
不同点:抽象类中可以有普通方法,接口只能有抽象方法(JDK1.8 之前)
抽象类中可以有普通成员变量,接口中只能有静态常量
抽象类只能被单继承,接口可以被多实现,

posted @ 2019-02-18 15:17  陈xiaolong  阅读(268)  评论(0编辑  收藏  举报