从其他类访问java中最终字段的正确方法
从其他类访问最终字段的好方法是什么?为什么 通过使其私有并在getter和setter方法中提供功能,将其与其他类隔离从其他类访问java中最终字段的正确方法,java,performance,oop,final,Java,Performance,Oop,Final,从其他类访问最终字段的好方法是什么?为什么 通过使其私有并在getter和setter方法中提供功能,将其与其他类隔离 public class Game extends JPanel { private final Racquet racquet; public Game() { racquet = new Racquet(this); } } public class Ball { private Game game; Ball(final Game game) {
public class Game extends JPanel {
private final Racquet racquet;
public Game() {
racquet = new Racquet(this);
}
}
public class Ball {
private Game game;
Ball(final Game game) {
this.game = game;
}
void move(int speed) {
if (collision()) {
y = game.getRacquet().getTopY() - DIAMETER;
}
}
}
public class Racquet {
final Game game;
public Racquet(final Game game) {
this.game = game;
}
public int getTopY() {
return Y;
}
}
B保持默认值,并直接使用变量.methodname
public class Game extends JPanel {
final Racquet racquet;
}
public class Ball {
void move(int speed) {
if (collision()) {
y = game.racquet.getTopY() - DIAMETER;
}
}
}
public class Racquet {
final Game game;
public Racquet(final Game game) {
this.game = game;
}
public int getTopY() {
return Y;
}
}
访问最终字段是否会直接提高性能 与其用吸气剂来移动球拍,不如用一种方法让它在内部为你做这件事
void move(int speed) {
if (collision()) {
racket.move(diameter)
}
}
//inside racket
public int move(int diameter){
return this.Y - diameter;
}
或者,如果您愿意,可以将移动拆分为向上移动、向下移动等。。并在传递直径后返回计算值。这将取决于许多因素,例如,球的位置。你可以检查球的位置,并决定用哪种方法呼叫和移动球拍
最好现实地考虑一下
您可以有一个玩家类:
负责确定球的位置。
移动球拍
事实上,你的球拍不会意识到球在哪里,或者球不会意识到你用球拍击球,球员也会意识到
如果您想遵循OOP准则,那么不要直接访问变量i.e public,而是让方法为您完成工作,并给出结果,这是一种方法。如果需要,保留getter用于显示 我喜欢你应该在网拍类中有方法来移动它,例如,向上移动,向下移动,等等。让方法在内部完成工作。请检查线y=game.getracket.getTopY-DIAMETER;在A和y中=game.getracket.getTopY-直径;在球类中,你可以得到球拍位置属性并减去球拍直径。把球的位置传给球拍,让球拍的方法去做,而不是叫接球手。你基本上是在问接球手或接球手,答案是没关系。getter是内联的,不需要任何费用。争取好的设计首先看S.R的答案,避免直接或间接地与其他对象的字段混在一起,使用适当的算法和数据结构,性能就在那里。微优化有时很有用,但这是最后一步。