zoukankan      html  css  js  c++  java
  • 吴裕雄--天生自然JAVA面向对象高级编程学习笔记:抽象类与接口的应用

    abstract class A{    // 定义抽象类A
        public abstract void print() ;    // 定义抽象方法print()
    };
    class B extends A {    // 定义子类,继承抽象类
        public void print(){        // 覆写抽象方法
            System.out.println("Hello World!!!") ;
        }
    };
    public class AbstractCaseDemo01{
        public static void main(String args[]){
            A a = new B() ;        // 通过子类为抽象类实例化
            a.print() ;
        }
    };
    abstract class Person{
        private String name ;        // 定义name属性
        private int age ;            // 定义age属性
        public Person(String name,int age){
            this.name = name ;
            this.age = age ;
        }
        public String getName(){
            return this.name ;
        }
        public int getAge(){
            return this.age ;
        }
        public void say(){        // 人说话是一个具体的功能
            System.out.println(this.getContent()) ;    // 输出内容
        }
        public abstract String getContent() ;    // 说话的内容由子类决定
    };
    class Student extends Person{
        private float score ;
        public Student(String name,int age,float score){
            super(name,age) ;    // 调用父类中的构造方法
            this.score = score ;
        }
        public String getContent(){
            return    "学生信息 --> 姓名:" + super.getName() + 
                    ";年龄:" + super.getAge() + 
                    ";成绩:" + this.score ;
        }
    };
    class Worker extends Person{
        private float salary ;
        public Worker(String name,int age,float salary){
            super(name,age) ;    // 调用父类中的构造方法
            this.salary = salary ;
        }
        public String getContent(){
            return    "工人信息 --> 姓名:" + super.getName() + 
                    ";年龄:" + super.getAge() + 
                    ";工资:" + this.salary ;
        }
    };
    public class AbstractCaseDemo02{
        public static void main(String args[]){
            Person per1 = null ;    // 声明Person对象
            Person per2 = null ;    // 声明Person对象
            per1 = new Student("张三",20,99.0f) ;    // 学生是一个人
            per2 = new Worker("李四",30,3000.0f) ;    // 工人是一个人
            per1.say() ;    // 学生说学生的话
            per2.say() ;    // 工人说工人的话
        }
    };
    interface Window{        // 定义Window接口,表示窗口操作
        public void open() ;    // 打开
        public void close() ;    // 关闭
        public void activated() ;    // 窗口活动
        public void iconified() ;    // 窗口最小化
        public void deiconified();// 窗口恢复大小
    }
    abstract class WindowAdapter implements Window{
        public void open(){} ;    // 打开
        public void close(){} ;    // 关闭
        public void activated(){} ;    // 窗口活动
        public void iconified(){} ;    // 窗口最小化
        public void deiconified(){};// 窗口恢复大小
    };
    class WindowImpl extends WindowAdapter{
        public void open(){
            System.out.println("窗口打开。") ;
        }
        public void close(){
            System.out.println("窗口关闭。") ;
        }
    };
    public class AdapterDemo{
        public static void main(String args[]){
            Window win = new WindowImpl() ;
            win.open() ;
            win.close() ;
        }
    };
    abstract class A{    // 定义抽象类
        public abstract void printA() ;    // 抽象方法
        interface B{    // 定义内部接口
            public void printB() ;    // 定义抽象方法
        }
    };
    class X extends A{    // 继承抽象类
        public void printA(){
            System.out.println("HELLO --> A") ;
        }
        class Y implements B{    // 定义内部类实现内部接口
            public void printB(){
                System.out.println("HELLO --> B") ;
            }
        };
    };
    public class InnerExtDemo01{
        public static void main(String args[]){
            A.B b = new X().new Y() ;
            b.printB() ;
        }
    };
    interface A{    // 定义接口
        public void printA() ;    // 抽象方法
        abstract class B{    // 定义内部抽象类
            public abstract void printB() ;    // 定义抽象方法
        }
    };
    class X implements A{    // 实现接口
        public void printA(){
            System.out.println("HELLO --> A") ;
        }
        class Y extends B{    // 继承抽象类
            public void printB(){
                System.out.println("HELLO --> B") ;
            }
        };
    };
    public class InnerExtDemo02{
        public static void main(String args[]){
            A.B b = new X().new Y() ;
            b.printB() ;
        }
    };
    interface A{    // 定义抽象类A
        public abstract void print() ;    // 定义抽象方法print()
    };
    class B implements A {    // 定义子类,继承抽象类
        public void print(){        // 覆写抽象方法
            System.out.println("Hello World!!!") ;
        }
    };
    public class InterfaceCaseDemo01{
        public static void main(String args[]){
            A a = new B() ;        // 通过子类为抽象类实例化
            a.print() ;
        }
    };
    interface USB{        // 定义了USB接口
        public void start() ;    // USB设备开始工作
        public void stop() ;    // USB设备结束工作
    }
    class Computer{
        public static void plugin(USB usb){    // 电脑上可以插入USB设备
            usb.start() ;
            System.out.println("=========== USB 设备工作 ========") ;
            usb.stop() ;
        }
    };
    class Flash implements USB{
        public void start(){    // 覆写方法
            System.out.println("U盘开始工作。") ;
        }
        public void stop(){        // 覆写方法
            System.out.println("U盘停止工作。") ;
        }
    };
    class Print implements USB{
        public void start(){    // 覆写方法
            System.out.println("打印机开始工作。") ;
        }
        public void stop(){        // 覆写方法
            System.out.println("打印机停止工作。") ;
        }
    };
    public class InterfaceCaseDemo02{
        public static void main(String args[]){
            Computer.plugin(new Flash()) ;
            Computer.plugin(new Print()) ;
        }
    };
    interface Fruit{    // 定义一个水果接口
        public void eat() ;    // 吃水果
    }
    class Apple implements Fruit{
        public void eat(){
            System.out.println("** 吃苹果。") ;
        }
    };
    class Orange implements Fruit{
        public void eat(){
            System.out.println("** 吃橘子。") ;
        }
    };
    public class InterfaceCaseDemo03{
        public static void main(String args[]){
            Fruit f = new Apple() ;    // 实例化接口
            f.eat() ;
        }
    };
    interface Fruit{    // 定义一个水果接口
        public void eat() ;    // 吃水果
    }
    class Apple implements Fruit{
        public void eat(){
            System.out.println("** 吃苹果。") ;
        }
    };
    class Orange implements Fruit{
        public void eat(){
            System.out.println("** 吃橘子。") ;
        }
    };
    class Factory{    // 定义工厂类
        public static Fruit getInstance(String className){
            Fruit f = null ;
            if("apple".equals(className)){    // 判断是否要的是苹果的子类
                f = new Apple() ;
            }
            if("orange".equals(className)){    // 判断是否要的是橘子的子类
                f = new Orange() ;
            }
            return f ;
        }
    };
    public class InterfaceCaseDemo04{
        public static void main(String args[]){
            Fruit f = Factory.getInstance(null) ;    // 实例化接口
            f.eat() ;
        }
    };
    interface Fruit{    // 定义一个水果接口
        public void eat() ;    // 吃水果
    }
    class Apple implements Fruit{
        public void eat(){
            System.out.println("** 吃苹果。") ;
        }
    };
    class Orange implements Fruit{
        public void eat(){
            System.out.println("** 吃橘子。") ;
        }
    };
    class Factory{    // 定义工厂类
        public static Fruit getInstance(String className){
            Fruit f = null ;
            if("apple".equals(className)){    // 判断是否要的是苹果的子类
                f = new Apple() ;
            }
            if("orange".equals(className)){    // 判断是否要的是橘子的子类
                f = new Orange() ;
            }
            return f ;
        }
    };
    public class InterfaceCaseDemo05{
        public static void main(String args[]){
            Fruit f = Factory.getInstance(args[0]) ;    // 实例化接口
            if(f!=null){    // 判断是否取得实例
                f.eat() ;
            }
        }
    };
    interface Network{
        public void browse() ;    // 浏览
    }
    class Real implements Network{
        public void browse(){
            System.out.println("上网浏览信息") ;
        }
    };
    class Proxy implements Network{
        private Network network ;    // 代理对象
        public Proxy(Network network){
            this.network = network ;
        }
        public void check(){
            System.out.println("检查用户是否合法。") ;
        }
        public void browse(){
            this.check() ;
            this.network.browse() ;    // 调用真实的主题操作
        }
    };
    public class ProxyDemo{
        public static void main(String args[]){
            Network net = null ;
            net  = new Proxy(new Real()) ;//  指定代理操作
            net.browse() ;    // 客户只关心上网浏览一个操作
        }
    };
  • 相关阅读:
    第4章 函数
    第3章 文件处理和函数
    第2章 数据类型
    第 8章 面向对象补充和网络编程
    第7章 面向对象
    第6章 常用模块
    第 5 章 函数的补充和模块加载
    git 使用命令提交文件
    jquery 读取本地json文件数据
    mpvue 封装api请求接口
  • 原文地址:https://www.cnblogs.com/tszr/p/12153251.html
Copyright © 2011-2022 走看看