zoukankan      html  css  js  c++  java
  • Java入门——抽象类与接口的应用

    Java入门——抽象类与接口的应用


    本Blog内容

    1. 为抽象类与接口实例化
    2. 抽象类的实际应用——模板设计
    3. 接口的实际应用——制定标准
    4. 设计模式——工厂设计
    5. 设计模式——代理设计

    为抽象类与接口实例化

      利用多态性

     1 package Sep16;
     2 
     3 public class AbstractCaseDemo1 {
     4 
     5     /**
     6      * @param args
     7      */
     8     public static void main(String[] args) {
     9         // TODO Auto-generated method stub
    10         Abstract a=new BAbstract();
    11         a.print();
    12     }
    13 
    14 }
    15 abstract class Abstract{
    16     public abstract void print();
    17 }
    18 class BAbstract extends Abstract{
    19     public void print(){
    20         System.out.println("Hello Word!!!");
    21     }
    22 }

    抽象类的实际应用——模板设计

      就是先用抽象类设计一张空白的模板,具体不同之处用子类实现。

     1 package Sep16;
     2 
     3 public class AbstractCaseDemo2 {
     4 
     5     /**
     6      * @param args
     7      */
     8     public static void main(String[] args) {
     9         // TODO Auto-generated method stub
    10         Person student=new Students("Bob",21,89f);
    11         Person worker=new Workers("搬砖哥",22,9999);
    12         student.say();
    13         worker.say();
    14     }
    15 
    16 }
    17 abstract class Person{
    18     private String name;
    19     private int age;
    20     public Person(String name, int age) {
    21         super();
    22         this.name = name;
    23         this.age = age;
    24     }
    25     public String getName() {
    26         return name;
    27     }
    28     public int getAge() {
    29         return age;
    30     }
    31     public void say(){
    32         System.out.println(this.getContent());//说话的功能,Person类的方法
    33         
    34     }
    35     public abstract String getContent();//说话的具体内容,根据不同的人,有不同的定义
    36 }
    37 class Students extends Person{
    38     private float score;
    39     public Students(String name, int age, float score) {
    40         super(name, age);
    41         this.score = score;
    42     }
    43     public String getContent(){
    44         return "学生信息:姓名:"+super.getName()+";年龄:"+super.getAge()+",成绩:"+this.score;
    45     }
    46 }
    47 class Workers extends Person{
    48     private float salary;
    49     public Workers(String name, int age, float salary) {
    50         super(name, age);
    51         this.salary = salary;
    52     }
    53     public String getContent(){
    54         return "工人信息:姓名:"+super.getName()+";年龄:"+super.getAge()+",工资:"+this.salary;
    55     }
    56 }
    学生信息:姓名:Bob;年龄:21,成绩:89.0
    工人信息:姓名:搬砖哥;年龄:22,工资:9999.0
    

     


    接口的实际应用——制定标准

    package Sep16;
    
    public class AbstractCsseDemo03 {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Computer.plugin(new Flash());
    		System.out.println("---------------------");
    		Computer.plugin(new Print());
    	}
    
    }
    interface USB{//定义USB标准
    	public void start();
    	public void stop();
    }
    //定义实现USB接口的U盘类
    class Flash implements USB{
    	public void start(){
    		System.out.println("U盘开始工作!");
    	}
    
    	public void stop() {
    		// TODO Auto-generated method stub
    		System.out.println("U盘停止工作!");
    	}
    }
    //定义实现USB接口的打印机类
    class Print implements USB{
    	public void start(){
    		System.out.println("打印机开始工作!");
    	}
    
    	public void stop() {
    		// TODO Auto-generated method stub
    		System.out.println("打印机停止工作!");
    	}
    }
    class Computer{
    	public static void plugin(USB usb){//实现了USB接口的类都可以传递过来
    		usb.start();
    		System.out.println("======设备工作中=====");
    		usb.stop();
    	}
    }
    

      

    U盘开始工作!
    ======设备工作中=====
    U盘停止工作!
    ---------------------
    打印机开始工作!
    ======设备工作中=====
    打印机停止工作!
    

    设计模式——工厂设计

      类似于Java的JVM虚拟机,采用Factory类的形式处理主函数与子类之间的关系。

      

  • 相关阅读:
    为EasySharding.EFCore提供Dapper相关查询扩展
    古典音乐作品编号标记解读
    乐理基础
    音乐指挥家
    2021年,年终总结
    有关Android launchMode 在APP(task)之间的应用——扔物线视频
    Springboot Jpa 有关多数据源的问题
    Python运算符及优先级
    高中信息技术(Python)重难点4:切片
    高中信息技术(Python)必修1 数据与计算 出现的模块和函数
  • 原文地址:https://www.cnblogs.com/BoscoGuo/p/5877541.html
Copyright © 2011-2022 走看看