多态 接口 抽象类

多态:
同一个对象在不同时刻表现出来的不同形态。
前提:

  1. List item存在继承/实现关系
  2. 存在方法重写
  3. 父类引用指向子类对象
    多态中成员访问特点
    使用多态时,访问成员变量的特点:
    编译看左边,运行看左边
    使用多态时,访问成员方法的特点:
    编译看左边,运行看右边
    public class Animal{
    public int age=40;
    public void eat(){
        System.out.println("动物吃东西");
    }
        }
        public static Cat extends Animal{
    		oublic int age=20;
    		public int weight =10;
    		@Override
    		public void eat(){
    		 System.out.println("猫吃鱼");
    		}
    		  public void playGame(){
        System.out.println("猫捉迷藏");
        }
    }
    public class AnimalDemo {
        public static void main(String[] args) {
            //有父类引用指向子类对象
            Animal a = new Cat();
            System.out.println(a.age);
            //System.out.println(a.weight);
            a.eat();
            //a.playGame();
            //成员变量编译执行都看左边,成员方法编译看左边,执行看右边
            //因为成员方法有重写,成员变量没有
        }
    }
    
    public class Animal{
    public void eat(){
        System.out.println("动物吃东西" );
        }
    }
    public  class Cat extends Animal{
        @Override
        public void eat() {
            System.out.println("猫吃鱼");
        }
    }
    public  class Dog extends Animal{
        public void lookHome(){
            System.out.println("狗看家");
        }
    }
     public class AnimalOpeart{
       /*public  void useAnimal(Cat c){
           c.eat();
       }
       public void useAnimal(Dog d){
           d.eat();
       }*/
       //把Animal a 传入这个方法  解决不同子类传入动作类的问题
      public void useAnimal(Animal a){
          a.eat();
      }
    }
    	public class AnimalDemo{
         public static void main(String[] args) {
              AnimalOpeart ao=new AnimalOpeart();
              Cat c=new Cat();
              ao.useAnimal(c);
              c.eat();
    
              Dog d=new Dog();
              ao.useAnimal(d);
              d.lookHome();
         }
    }
    
    public class Animal {
    
    public void eat() {
        System.out.println("动物吃东西");
    }
    
    }
    public class Cat extends Animal {
    
        @Override
        public void eat() {
            System.out.println("猫吃鱼");
        }
    
        public void playGame() {
            System.out.println("猫捉迷藏");
        }
    }
    public class Dog extends Animal {
    
        @Override
        public void eat() {
            System.out.println("狗吃骨头");
        }
    }
    public class AnimalDemo {
        public static void main(String[] args) {
            //向上转型
            Animal a = new Cat();
            a.eat();
            //向下转型
            Cat c = (Cat) a;
            c.eat();
            c.playGame();
            //向上转型
            a = new Dog();
            a.eat();
            //向下转型
     //classCastException   类型转换异常
            // Cat cc=(Cat) a;
            // cc.eat();
            //cc.playGame();
        }
    }
    
    public class Animal {
        private String name;
        private int age;
    
        public Animal() {
        }
    
        public Animal(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
        public void eat(){
            System.out.println("动物吃东西");
        }
    }
    public class Cat extends Animal {
        public Cat() {
        }
    
        public Cat(String name, int age) {
            super(name, age);
        }
    
        @Override
        public void eat() {
            System.out.println("猫吃鱼");
        }
    }
    public class Dog extends Animal{
        public Dog() {
        }
    
        public Dog(String name, int age) {
            super(name, age);
        }
    
        @Override
        public void eat() {
            System.out.println("狗吃骨头");
        }
    }
    public class AnimalDemo {
        public static void main(String[] args) {
            Animal a =new Cat();
            a.setName("加菲猫");
            a.setAge(5);
    System.out.println(a.getName()+","+a.getAge());
            a.eat();
    
            a=new Cat("大花猫",6);
            System.out.println(a.getName()+","+a.getAge());
            a.eat();
            System.out.println("--------------");
    
            Animal d=new Dog();
            d.setName("二哈");
            d.setAge(6);
            System.out.println(d.getName()+","+d.getAge());
           d.eat();
            d=new Dog("大黄",5);        System.out.println(d.getName()+","+d.getAge());
            d.eat();
        }
    }
    
    

猜你喜欢

转载自blog.csdn.net/weixin_44313232/article/details/86668671