JAVA抽象类实例化对象实现接口的三种调用方法
在笔者的学习过程中抽象类实例化对象实现接口,笔者发现了三种表示方法。第一种是要实例化接口和抽象类,再用实例化的对象调用重写的的方法,这比较繁琐;第二种是直接实例化抽象类,将抽象类进行强转成对象,因为对象中重写了抽象类和接口中的抽象方法,再调用对象本身重写后的方法;第三种是直接实例化对象,用对象本身重写的方法。这里笔者将这三种方法分享给大家,笔者推荐使用第三种。
1:先写一个抽象类:
package com.JieKou_03; public abstract class Animal { private String name; private int age; public Animal(String name, int age) { this.name = name; this.age = age; } public Animal() { } 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 abstract void eat(); }
2:再写一个接口:
package com.JieKou_03; public interface Jimp { public abstract void jumpping(); }
3:再创建一个抽象类的实例化对象,并且实现接口:
package com.JieKou_03; public class Cat extends Animal implements Jimp{ public Cat(String name, int age) { super(name, age); } public Cat() { } @Override public void eat() { System.out.println("猫吃鱼儿"); } @Override public void jumpping() { System.out.println("猫可以跳高翻墙了"); } }
第一种:例化接口和抽象类,再用实例化的对象调用重写的的方法
package com.JieKou_03; public class AnimalTest01 { public static void main(String[] args) { Animal a=new Cat("汤姆",2); a.eat(); Jimp j=new Cat(); j.jumpping(); System.out.println(a.getName()+","+a.getAge()); } }
第二种:直接实例化抽象类,将抽象类进行强转成对象,因为对象中重写了抽象类和接口中的抽象方法,再调用对象本身重写后的方法
package com.JieKou_03; public class AnimalTest02 { public static void main(String[] args) { Animal a=new Cat("杰克",2); a.eat(); ((Cat)a).jumpping(); System.out.println(a.getName()+","+a.getAge()); } }
第三种:直接实例化对象,用对象本身重写的方法
package com.JieKou_03; public class AnimalTest03 { public static void main(String[] args) { Cat c=new Cat("约翰",8); c.eat(); c.jumpping(); System.out.println(c.getName()+","+c.getAge()); } }
综上:笔者推荐第三种方法来调用方法,这是最简单的,没有第一种的繁琐,也没有第二种需要强转。