在笔者的学习过程中抽象类实例化对象实现接口,笔者发现了三种表示方法。第一种是要实例化接口和抽象类,再用实例化的对象调用重写的的方法,这比较繁琐;第二种是直接实例化抽象类,将抽象类进行强转成对象,因为对象中重写了抽象类和接口中的抽象方法,再调用对象本身重写后的方法;第三种是直接实例化对象,用对象本身重写的方法。这里笔者将这三种方法分享给大家,笔者推荐使用第三种。
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());
}
}
综上:笔者推荐第三种方法来调用方法,这是最简单的,没有第一种的繁琐,也没有第二种需要强转。