zoukankan      html  css  js  c++  java
  • 抽象类和接口

    抽象类
    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要加油
  • 相关阅读:
    开源代码分析工具 good
    Qt5---ftp上传功能(使用组合的办法实现功能,QNetworkAccessManager自动管理分片上传,用QLoggingCategory屏蔽SSL警告)
    QT---基于WinPcap的局域网络管理工具(主机扫描、包过滤、ARP攻击、端口扫描)
    unity资源
    MVC5 EF6 Bootstrap3 HtmlHelper
    轻量级IOC框架Guice
    CloudNotes:一个云端个人笔记系统
    WeChatAPI 开源系统架构详解
    基础查询扩展
    ASP.NET 5 Hello World
  • 原文地址:https://www.cnblogs.com/ljmmm1/p/14269056.html
Copyright © 2011-2022 走看看