• 抽象类和接口


    抽象类
    why:为了解决父类不能实例化对象的问题。
    how:abstract class
    抽象方法
    why:父类中的一些方法,无法写方法体。
    how:abstract foo();
    特点:子类必须重写父类的抽象方法,除非子类也是一个抽象类
    接口
    why:为了解决父类单根性。
    特点:一个类只能继承(extends)一个父类,但是可以实现(implement)多个接口。
    功能:1、体现类的能力。2、接口定义一种规范和标准。
    语法:接口中的属性都是静态常量接口中的方法都是抽象方法。接口可以多继承。
    面向接口编程
    定义接口(定义规范和标准)
    各自按照接口进行开发(面向对象的思想)
    模块集成 - 项目
    final
    类:最终类,不能被继承。代表是String
    属性:常量,不能被修改。
    方法:最终方法,不能重写。

    Ink接口

    public interface Ink {
        public String getColor();
    }
    

    Black类

    public class Black implements Ink{
        public String getColor(){//重写getColor()
            return "黑色";
        }
    }
    

    Color类

    public class Color implements Ink{//重写getColor()
        public String getColor(){
            return "彩色";
        }
    }
    

    Paper接口

    public interface Paper {
        public String getSize();
    }
    

    A4

    public class A4 {
        public String getSize(){//重写getSize()
            return "A4";
        }
    }
    
    

    B5

    public class B5 implements Paper{
        public String getSize(){//重写getSize()
            return "B5";
        }
    }
    

    Printer

    public class Printer {
        private Ink ink;
        private Paper paper;
        String band;
        public Printer(String band){
            this.band = band;
        }
        public Ink getInk() {
            return ink;
        }
        public Paper getPaper() {
            return paper;
        }
        public String getBand() {
            return band;
        }
        public void setInk(Ink ink) {
            this.ink = ink;
        }
        public void setPaper(Paper paper) {
            this.paper = paper;
        }
        public void print(String str){
            System.out.println(band+"正在使用"+ink.getColor()+"墨盒和"+paper.getSize()+"纸张打印:");
            System.out.println(str);
        }
    }
    
    

    Customer

    public class Customer {
        
        public static void main(String[] args) {
            Ink ink = new Black();
            Paper paper = new B5();
            Printer printer = new Printer("佳能");
            printer.setInk(ink);
            printer.setPaper(paper);
            printer.print("1111");
        }
    }
    

    运行结果

    image.png

    ljm要加油
  • 相关阅读:
    C++11 二叉堆
    OpenCV --- 实现两幅图像并排合并(ROI)
    OpenCV --- 修改图像的对比度、亮度 、RGB转Gray图像、修改图像的尺寸
    Opencv --- 图像像素遍历的各种方法
    Ubuntu系统的安装(虚拟机) 并配置C/C++编译器
    在Ubuntu下编译安装nginx
    【OpenCV3】threshold()函数详解
    MFC 剪切板的使用、线程介绍
    C++基础知识 基类指针、虚函数、多态性、纯虚函数、虚析构
    【OpenCV3】cvRound()、cvFloor()、cvCeil()函数详解
  • 原文地址:https://www.cnblogs.com/ljmmm1/p/14269056.html
Copyright © 2020-2023  润新知