java基础知识菜鸟学习第二十八天——Java抽象类返回值使用终结版

mac2026-03-28  2

Java抽象类使用的总结

在学习到Java常用类的时候,很多都是抽象类,没有办法使用抽象类中的方法,就需要去找到父类中的static getInstance();方法返回子类对象,这个时候,很多人就有点蒙,为什么要这样做?不可以通过new出一个子类对象来调用父类方法吗?这时候就需要深度知道抽象类中的返回值的问题,简而言之,子类是怎么样实现抽象父类的方法呢?

抽象类的基础知识在前面博客已经发了,这里就不废话,直接说重点!

Java抽象类使用分类归纳为两种:

抽象类作为方法的参数进行传递:必须传递进去一个子类的对象。

抽象类作为方法的返回值进行传递:必须返回一个子类的对象。

i.抽象类作为方法的参数传递时

代码演示:

//抽象父类 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(); } } //执行结果: 小狗在汪汪的唱歌 在吃饭 小猫在喵喵的唱歌 在吃饭 总结:抽象类作为方法的参数进行传递:必须传递进去一个子类的对象
ii.抽象类作为方法的返回值进行传递时

代码演示:

//抽象父类 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(); } } //执行结果: 在吃饭 小狗在汪汪的唱歌 在吃饭 小狗在汪汪的唱歌 抽象类作为方法的返回值进行传递:必须返回一个子类的对象
最新回复(0)