gpt4 book ai didi

java - Java中类之间的方法可见性

转载 作者:行者123 更新时间:2023-11-29 08:20:12 26 4
gpt4 key购买 nike

在 Java 中(通常)有没有一种方法可以使一个类如此公开,以至于它的方法等...可以从周围甚至不实例化它的小类中访问?哈,我的意思是...如果我有一个爸爸类,它有一个方法draw(),它实例化了一个名为 Hand 的婴儿类和一个名为 Deck 的婴儿类,然后 deck 实例化了一个名为 deck 的婴儿类具有方法 play() 的卡片,Play() 是否有办法从 daddy 类调用 Draw()

这里的想法是......爸爸类说“Deck!play(card)!”然后甲板说“卡!玩()!”然后转身说“嘿爸爸!Draw()!”

PS 这个想法是......在 CCG 中,每张卡片都有一个不同的“play()”方法,但它们本质上都是以相同的方式调用的。打牌的机会来了,你就叫打牌。但是这张卡片本身并没有做任何内部的事情:不不,它调用了游戏规则中的一些方法,这些方法是可见的。所以,就像 MTG 中的一张牌,上面写着“抽一张牌。对目标玩家造成一次伤害”。正在调用 draw(player, 1) 和 dealDamage(player, 1) ,它们可能不在卡片本身中...因为它们会影响变量,这些变量可能由玩家在开始游戏时实例化并商定生命总数和规则,例如什么“画”是什么意思?

(元问题:像往常一样,有人可以重命名这个问题,以便它反射(reflect)我的问题......作为一个初学者是如此令人沮丧!)

最佳答案

当 Daddy 类实例化 Baby 类时,它(Daddy)可以将对自身的引用传递给 Baby 构造函数,使 Baby 可​​以访问其所有公共(public)方法。

class Daddy {
public foo(){...}
public createBaby(){
Baby baby = new Baby(this);
// baby now has a reference to Daddy
}
}


class Baby {
Daddy daddy;
public Baby(Daddy daddy){
this.daddy = daddy;
}
...
public callDaddy(){
daddy.foo();
}
}

关于java - Java中类之间的方法可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/340562/

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