抽象类的基础知识在前面博客已经发了,这里就不废话,直接说重点!
抽象类作为方法的参数进行传递:必须传递进去一个子类的对象。
抽象类作为方法的返回值进行传递:必须返回一个子类的对象。
代码演示:
//抽象父类 public abstract class Animals { public abstract void sing() ; public void eat(){ System.out.println("在吃饭"); } } //子类 public class Dog extends Animals { //重写了父类中的方法 public void sing() { System.out.println("小狗在汪汪的唱歌"); } } //子类 public class Cat extends Animals { //重写了父类中的方法 public void sing() { System.out.println("小猫在喵喵的唱歌"); } } //测试类 public class Test1 { public static void main(String[] args) { Dog one = new Dog(); function(one); Cat two = new Cat(); function(two); } // 使用多态的特性,编译看左边,运行看右边 public static void function(Animals a) {// Animals a=new Dog();Animals a=new Cat(); a.sing(); a.eat(); } } //执行结果: 小狗在汪汪的唱歌 在吃饭 小猫在喵喵的唱歌 在吃饭 总结:抽象类作为方法的参数进行传递:必须传递进去一个子类的对象代码演示:
//抽象父类 package com.mage.duotaifangfa; //父类 abstract class Animals { public abstract void sing(); public static void eat() { System.out.println("在吃饭"); } //抽象类调用静态方法返回子类对象,使用多态性质,编译看左边,运行看右边 public static Animals function() { if (new Dog() instanceof Animals) { return new Dog(); } return new Cat(); } } //子类 class Dog extends Animals { // 重写了父类中的方法 public void sing() { System.out.println("小狗在汪汪的唱歌"); } } //子类 class Cat extends Animals { // 重写了父类中的方法 public void sing() { System.out.println("小猫在喵喵的唱歌"); } } //测试类 public class Test1 { public static void main(String[] args) { //多态的性质 Animals one = Animals.function(); one.eat(); one.sing(); Animals two = Animals.function(); two.eat(); two.sing(); } } //执行结果: 在吃饭 小狗在汪汪的唱歌 在吃饭 小狗在汪汪的唱歌 抽象类作为方法的返回值进行传递:必须返回一个子类的对象