gpt4 book ai didi

java - (Java) 实例化子类的不同方式

转载 作者:行者123 更新时间:2023-12-01 07:06:50 25 4
gpt4 key购买 nike

我有这两门课:

public class A {}
public class B extends A {}

在主类中,我会声明:

A a = new B();
B b = new B();

a 和 b 有什么区别?这就是我们所说的 java 中的子类型吗?

最佳答案

ab 之间的区别在于,对于 a,您只能使用 A 的公共(public) API > 类提供了尽管它实际上是一个 B 类型对象,但是通过 b,您可以使用 A 的公共(public) API 以及B 的公共(public) API。

例如:

假设A和B定义如下:

// A.java
public class A
{
public void x()
{
z("X");
}

public void y()
{
z("Y");
}

protected void z(String message)
{
System.out.println(message);
}
}

// B.java
public class B extends A
{
public void a()
{
z("A");
}

public void b()
{
z("B");
}
}

这是一个演示:

// Demo.java
public class Demo
{
public static void main(String[] args)
{
A a = new B();
B b = new B();

// Can only call A's public methods
a.x();
a.y();
// a.a(); Can't use
// a.b(); Can't use

// Can call all public methods
b.a();
b.b();
b.x();
b.y();
}
}

关于java - (Java) 实例化子类的不同方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22098461/

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