• 多态


    package oop;
    
    /* Animal a = new Dog();
     * 对象a具有两种类型
     * 编译类型: 声明对象变量的类型, Animal, 表示把对象看成什么类型
     * 运行类型: 对象的真实类型, Dog, 运行类型-->对象的真实类型
     * 注: 编译类型必须是运行类型的父类或相同类型
     * 当编译类型和运行类型不同的时候, 就产生了多态
     * 
     * 所谓多态: 对象具有多种形态, 对象可以存在不同的形式
     * Animal a = null;
     * 		a = new Dog();	// 此时a表示Dog类型的形态
     * 		a = new Cat();	// 此时a表示Cat类型的多态
     * 多态的前提: 可以是继承关系(类和类), 也可以是实现关系(接口和实现类)
     * 多态的特点: 把子类对象赋给父类变量, 在运行时期会表现出具体的子类特征
     * 多态的作用: 把不同的子类对象都当做父类类型来看待, 可以屏蔽不同子类对象之间的实现差异
     * 从而写出通用的代码达到通用编程, 以适应不断变化的需求
    */
    
    // 普通动物
    class Animal {
    	
    	public void eat() {
    		System.out.println("吃普通的食物");
    	}
    }
    
    // 狗
    class Dog extends Animal {
    	
    	public void eat() {	// 对父类方法的覆盖
    		System.out.println("吃肉骨头...");
    	}
    }
    
    // 猫
    class Cat extends Animal {
    	
    	public void eat() {	// 对父类方法的覆盖
    		System.out.println("吃鱼刺...");
    	}
    }
    
    // 饲养员
    class Person {
    	
    	public void feed(Animal d) {
    		System.out.println("喂食...");
    		d.eat();
    	}
    }
    
    public class TestDemo {
    
    	public static void main(String[] args) {
    
    		// 创建饲养员对象
    		Person p = new Person();
    		// 创建狗对象
    		Animal a = new Dog();
    		p.feed(a);
    		a = new Cat();
    		p.feed(a);
    	}
    
    }
    

      

  • 相关阅读:
    cmd 一键获取 所有连接过的wifi 密码
    MYSQL注入语句
    Web安全篇之SQL注入攻击
    Kali Linux 不能联网上网 解决方法
    php杂项
    laravel下的数据序列化
    填充数据
    css
    array
    GD库常用函数
  • 原文地址:https://www.cnblogs.com/mjn1/p/11455692.html
Copyright © 2020-2023  润新知