CameraPhone クラスコンパイラのすぐ下で宣言された変数 imageSize と memorySize を使用してこのコードを最初にコンパイルしようとしたときに、なぜそれが問題なのかという厄介な質問がありましたが、コードの最後で変数を宣言すると完全に機能します。
Phone クラスが存在するとします。2 つのインスタンス変数を含むサブクラス CameraPhone を定義します。imageSize という名前の整数は、各画像のサイズをメガピクセル単位で表します (簡単にするために、ピクセルは 1 バイトを占めると仮定します。したがって、メガピクセルはメガバイトに等しい)。つまり、2 は各画像がカメラのメモリのギガバイト数を表す memorySize という名前の整数 (つまり、4 はメモリの 4 ギガバイトを意味します)。上記の 2 つのインスタンス変数に対応する 2 つの整数パラメーターを受け取り、それぞれのインスタンス変数を初期化するために使用されるコンストラクターがあります。カメラのメモリが保持できる画像の数を (整数として) 返す numPictures という名前のメソッドもあります。1 ギガバイトは 1,000 メガバイトであることを忘れないでください。
public class CameraPhone extends Phone {
public CameraPhone(int imageSize, int memorySize) {
this.imageSize = imageSize;
this.memorySize = memorySize;
}
public int numPictures() {
return memorySize * 1000 / imageSize;
}
private int imageSize; private int memorySize;
}