// Shape クラスã¨ãã®ã‚µãƒ–クラス Circle クラスã€Square クラス
class Shape {
void draw() {
System.out.println("Drawing a shape");
}
}
class Circle extends Shape {
void draw() {
System.out.println("Drawing a circle");
}
void calculateArea() {
System.out.println("Calculating the area of a circle");
}
}
class Square extends Shape {
void draw() {
System.out.println("Drawing a square");
}
void calculateArea() {
System.out.println("Calculating the area of a square");
}
}
public class Main {
public static void main(String[] args) {
// Shape クラス型ã®é…列を作æˆ
Shape[] shapes = new Shape[3];
// ç•°ãªã‚‹å½¢çжã®ã‚ªãƒ–ジェクトをé…åˆ—ã«æ ¼ç´
shapes[0] = new Circle();
shapes[1] = new Square();
shapes[2] = new Shape();
// é…列ã‹ã‚‰ã‚ªãƒ–ジェクトをå–り出ã—ã¦ãƒ€ã‚¦ãƒ³ã‚ャストã—ã¦ç‰¹æœ‰ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™
for (Shape shape : shapes) {
if (shape instanceof Circle) {
Circle circle = (Circle) shape;
circle.calculateArea();
} else if (shape instanceof Square) {
Square square = (Square) shape;
square.calculateArea();
}
}
}
}
ã“ã®ä¾‹ã§ã¯ã€Shape クラス型ã®é…列を作æˆã—ã€ç•°ãªã‚‹å½¢çжã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ ¼ç´ã—ã¦ã„ã¾ã™ã€‚ãã—ã¦ã€é…列ã‹ã‚‰è¦ç´ ã‚’å–り出ã—ã¦ã€å„è¦ç´ ã‚’ Circle クラスや Square クラスã«ãƒ€ã‚¦ãƒ³ã‚ャストã—ã¦ã€ãれãžã‚Œã®ç‰¹æœ‰ã®ãƒ¡ã‚½ãƒƒãƒ‰ï¼ˆcalculateArea メソッド)を呼ã³å‡ºã—ã¦ã„ã¾ã™ã€‚instanceof 演算åを使用ã—ã¦ã€ãƒ€ã‚¦ãƒ³ã‚ãƒ£ã‚¹ãƒˆãŒæˆåŠŸã™ã‚‹ã‹ã©ã†ã‹ã‚’確èªã—ã¦ã„ã¾ã™ã€‚
é…列ã§ã®ãƒ€ã‚¦ãƒ³ã‚ャスト
é…列ã§ã®ãƒ€ã‚¦ãƒ³ã‚ャストã«ã¯ã„ãã¤ã‹é‡è¦ãªãƒã‚¤ãƒ³ãƒˆãŒã‚りã¾ã™ã€‚以下ã«ã€ãã®è§£èª¬ã‚’ã—ã¾ã™ã€‚
- è¦ç´ ã®å®Ÿéš›ã®åž‹ã®ç¢ºèª (
instanceof演算å):- é…列ã‹ã‚‰è¦ç´ ã‚’å–り出ã™å‰ã«ã€ãã®è¦ç´ ãŒæœŸå¾…ã™ã‚‹åž‹ã§ã‚ã‚‹ã‹ã‚’確èªã™ã‚‹ãŸã‚ã«
instanceof演算åを使用ã—ã¾ã™ã€‚ instanceof演算åã¯ã€å·¦è¾ºã®ã‚ªãƒ–ジェクトãŒå³è¾ºã®ã‚¯ãƒ©ã‚¹ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã§ã‚れã°trueã‚’è¿”ã—ã€ãã†ã§ãªã‘れã°falseã‚’è¿”ã—ã¾ã™ã€‚- ã“ã®ç¢ºèªã‚’行ã†ã“ã¨ã§ã€ãƒ€ã‚¦ãƒ³ã‚ãƒ£ã‚¹ãƒˆãŒæˆåŠŸã™ã‚‹ã‹ã©ã†ã‹ã‚’安全ã«ç¢ºèªã§ãã¾ã™ã€‚
- é…列ã‹ã‚‰è¦ç´ ã‚’å–り出ã™å‰ã«ã€ãã®è¦ç´ ãŒæœŸå¾…ã™ã‚‹åž‹ã§ã‚ã‚‹ã‹ã‚’確èªã™ã‚‹ãŸã‚ã«
- è¦ç´ ã®ãƒ€ã‚¦ãƒ³ã‚ャスト:
instanceof演算åã§ç¢ºèªã—ãŸå¾Œã€å®Ÿéš›ã«ãƒ€ã‚¦ãƒ³ã‚ャストを行ã„ã¾ã™ã€‚- ダウンã‚ャストを行ã†éš›ã«ã¯ã€ã‚ャスト演算å
(Type)を使用ã—ã¾ã™ã€‚ - ダウンã‚ャスト後ã«ã¯ã€ãã®è¦ç´ ã®åž‹ã«åˆã‚ã›ãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’安全ã«å‘¼ã³å‡ºã™ã“ã¨ãŒã§ãã¾ã™ã€‚
å•題ã®è§£ç”例ã§ã¯Shape クラス型ã®é…列ã«ç•°ãªã‚‹å½¢çжã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ ¼ç´ã—ã€é…列ã‹ã‚‰è¦ç´ ã‚’å–り出ã—㦠instanceof 演算åã§åž‹ã‚’確èªã—ãŸå¾Œã€ãƒ€ã‚¦ãƒ³ã‚ャストã—ã¦ç‰¹æœ‰ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—ã¦ã„ã¾ã™ã€‚
「015 ãƒãƒªãƒ¢ãƒ¼ãƒ•ィズムã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント