zoukankan      html  css  js  c++  java
  • 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();
        }
    }

  • 相关阅读:
    Android学习笔记04-Activity及Activity生命周期
    Android学习笔记03-学习过程中碰到的一些问题及解决方法
    Android学习笔记--生命周期
    Android学习笔记01
    Android学习笔记--项目框架介绍
    Android学习笔记- Animation动画
    Android学习笔记02-AndroidManifest.xml文件解析
    cx_Oracle.DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded 解决方法
    jvm 03-java堆内存模型
    jvm 02-java对象访问模式
  • 原文地址:https://www.cnblogs.com/qq993411626------/p/10396318.html
Copyright © 2011-2022 走看看