gpt4 book ai didi

java - 从父抽象类调用方法

转载 作者:行者123 更新时间:2023-11-30 03:49:50 25 4
gpt4 key购买 nike

我只是想用java详细了解抽象类和接口(interface)。我在 SO 中读到了一些与从抽象类和接口(interface)一起重写和实现相同签名方法相关的问题。

引用文献:One , Two

之后,我尝试使用自己的代码来更清楚地了解这个概念。然后我遇到了几个问题:

  1. 如何调用抽象类中编写的具体方法?
  2. 如果对象的类型为 CAI 之间是否可以进行类型转换?

我尝试过以下代码:

public class TestMethods {

public static void main(String[] args) {
C c1 = new C();
c1.methodOne();
c1.methodTwo();

// Q.1
A c2 = new C();
// HOW TO CALL METHOD IN CLASS A WITH c2
c2.methodOne(); // I want to call here methodOne() from A

// Q.2
I c3 = new C();
A c4 = (A) c3;
// WILL THIS TYPE CASTING WORKS
// HOW TO CALL METHOD IN CLASS A WITH c4
c4.methodOne();
c4.methodTwo();
}

}

class C extends A implements I{

@Override
public void methodTwo() {
System.out.println("Method Two in Concrete Class C");
}

@Override
public void methodOne(){
System.out.println("Method One in Concrete Class C");
}

}


abstract class A{
public void methodOne(){
System.out.println("Method One in Abstract Class A");
}

public abstract void methodTwo();
}

interface I{
public void methodOne();
public void methodTwo();
}

已添加

问题3
根据以下答案之一的建议,我可以从类 C 调用 super.methodOne() 。但是,如果我没有从具体类 C 调用 super 来从其扩展父抽象类 A 调用具体方法,该怎么办?我不想修改我的具体类C,那么我可以调用父类(super class)中的方法吗?

最佳答案

  1. 您可以使用super.methodOne()调用具体方法
  2. 你可以将 C 转换为 A,将 C 转换为 I,而不是相反,因为 C 拥有 A 所拥有的一切,但还可以拥有更多,所以 C 是 A,但 A 不是 C。

关于java - 从父抽象类调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24723432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com