• 抽象类和接口


    抽象类
    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要加油
  • 相关阅读:
    docker search 报错
    mgo连接池
    饿了么这样跳过Redis Cluster遇到的“坑”
    Linux Swap的那些事
    epoll使用详解(精髓)(转)
    select、poll、epoll之间的区别总结[整理](转)
    git merge 和 git rebase 小结(转)
    linux查看端口占用情况
    [LeetCode] Combinations——递归
    C++中的static关键字的总结(转)
  • 原文地址:https://www.cnblogs.com/ljmmm1/p/14269056.html
Copyright © 2020-2023  润新知