美文网首页
抽象类作为方法的返回值

抽象类作为方法的返回值

作者: wangfs | 来源:发表于2018-06-30 22:43 被阅读162次
    1.1 定义一个抽象类
    package cn.itcast.abstractclass;
    
    public abstract class Animal {
        public abstract void eat();
    }
    
    1.2 抽象类的子类
    package cn.itcast.abstractclass;
    
    public class Cat extends Animal {
    
        public void eat() {
            System.out.println("猫在吃鱼");
        }
    
    }
    
    1.3 定义一个类,抽象类作为该类的方法的返回值
    package cn.itcast.abstractclass;
    
    public class GetAnimal {
        /*
         * 定义方法,方法返回值是Animal类型
         * 抽象类,抽象类是没有对象的,因此在方法的return后,返回Animal的子类对象
         * */
        
        //此处定义了返回值类型是Animal,后面在做测试类引用的时候,调用此方法时赋值给引用变量,引用变量类型不能是子类类型,除非向下转型
        public Animal getAnimal() { 
            return new Cat();//new Cat()被自动提升为Animal类型,向上转型
        }
    }
    
    1.4 定义一个测试类
    package cn.itcast.abstractclass;
    
    public class TestReturn {
        public static void main(String[] args) {
            //调用GetAnimal类的方法,getAnimal,返回值是Animal类型
            GetAnimal g = new GetAnimal();
            Animal a = g.getAnimal();//方法的返回值是Animal类型(而不是Cat类),return new Cat()。可看下GetAnimal类中的getAnimal方法的返回值类型
            a.eat();
        }
    }
    

    相关文章

      网友评论

          本文标题:抽象类作为方法的返回值

          本文链接:https://www.haomeiwen.com/subject/nvpxuftx.html