如何使用另一个类中abstract
类的非抽象方法而不扩展?
答案 0 :(得分:0)
抽象类:
package com.test;
public abstract class MyAbstract {
public abstract void abstractMethod();
public void callNonAbstractMethod() {
System.out.println("Hello");
}
}
匿名类:
package com.test;
public class Example {
public static void main(String[] args) {
new Example().something();
}
void something() {
MyAbstract a = new MyAbstract() {
@Override
public void abstractMethod() {
//TODO implement
}
};
a.callNonAbstractMethod();
}
}
编译器生成的内部类将用于上述示例。
static class Example extends MyAbstract
{
Example(){}
void abstractMethod()
{
System.out.println("hiee");
}
}
抽象类:
package com.test;
public abstract class MyAbstract {
public abstract void abstractMethod();
public void callNonAbstractMethod() {
System.out.println("Hello");
}
}
答案 1 :(得分:-1)
我认为你可以使用匿名类。虽然它是一种扩展,但您没有明确使用关键字extends。事实上,你不能在没有隐式扩展的情况下在java中使用任何类,因为每个类都扩展Object
。
package com.test;
public class Example {
public static void main(String[] args) {
new Example().something();
}
void something() {
MyAbstract a = new MyAbstract() {
@Override
public void abstractMethod() {
//TODO implement
}
};
a.callNonAbstractMethod();
}
}
这是你的抽象类:
package com.test;
public abstract class MyAbstract {
public abstract void abstractMethod();
public void callNonAbstractMethod() {
System.out.println("Hello");
}
}
结果:
Hello
答案 2 :(得分:-1)
你不能。
要调用某个类A
的任何非静态方法,您需要A
或A
的子类的实例,因为这样的方法通常对此类数据进行操作一个实例。这就是“面向对象”的核心所在。
在您的情况下,A
是抽象的,不能有直接实例。因此,调用方法的唯一方法是使某些类B
的实例扩展A
。您可以找到可以使用的现有子类,也可以创建自己的子类。