gpt4 book ai didi

java - 继承如何与java中的抽象类一起工作

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:55:16 29 4
gpt4 key购买 nike

我正在编写一小段代码以确保我了解 Java 基础知识并且我有以下内容。

package teams1;

public abstract class Team1{
private String sport = new String();

public abstract String getSport();

public abstract void setSport();
}

import teams1.*;
abstract class FootballTeam1 extends Team1{

public String getSport(){
return "Football";
}

public void setSport(){
this.sport="Football";
}
}

它不会编译,因为 sport 在父类(super class)中是私有(private)的,但我认为 FootballTeam1 会继承它自己的 sport 副本,因为它正在扩展 Team1。任何帮助,将不胜感激。谢谢!

最佳答案

您基本上已经回答了您自己的问题。 FootballTeam1 无权访问其父级的私有(private)字段。那就是' protected ' 范围用于。

但是,子 FootballTeam1 确实有自己的字段副本。它具有父类具有的所有字段的副本,我认为这会引起混淆。

这种区别的原因是模块化。父类的子类只能访问父类中明确声明它可以访问的部分。这允许开发人员考虑在称为“Open/Closed Principle”的面向对象目标下公开类的哪些部分。 ';也就是说,类应该对扩展开放,对修改关闭。

例如,最快的类“修复”是更改字段的范围

private String sport = new String();

成为

protected String sport = new String();

public String sport = new String();

如果您不想让子类直接访问该字段,但又想让它更改该字段,则可以使用 protected setter 方法。例如,您可以将以下内容添加到 Team1

protected void setSport( String newValue ) {
this.sport = newValue;
}

关于java - 继承如何与java中的抽象类一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27017804/

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