// 親クラス: Vehicle
class Vehicle {
// エンジンを起動ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
void start() {
System.out.println("エンジンを起動ã—ã¾ã™ã€‚");
}
// ã‚¨ãƒ³ã‚¸ãƒ³ã‚’åœæ¢ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰
void stop() {
System.out.println("ã‚¨ãƒ³ã‚¸ãƒ³ã‚’åœæ¢ã—ã¾ã™ã€‚");
}
}
// åクラス1: Car
class Car extends Vehicle {
// アクセルをè¸ã‚€ãƒ¡ã‚½ãƒƒãƒ‰
void accelerate() {
System.out.println("アクセルをè¸ã¿ã¾ã™ã€‚");
}
}
// åクラス2: Bicycle
class Bicycle extends Vehicle {
// ベルを鳴らã™ãƒ¡ã‚½ãƒƒãƒ‰
void ringBell() {
System.out.println("ベルを鳴らã—ã¾ã™ã€‚");
}
}
// 動作確èªã‚¯ãƒ©ã‚¹: VehicleTest
public class VehicleTest {
public static void main(String[] args) {
// Carクラスã®ã‚ªãƒ–ジェクトを作æˆ
Car myCar = new Car();
// Carクラスã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—
myCar.start();
myCar.accelerate();
myCar.stop();
// Bicycleクラスã®ã‚ªãƒ–ジェクトを作æˆ
Bicycle myBicycle = new Bicycle();
// Bicycleクラスã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã—
myBicycle.start();
myBicycle.ringBell();
myBicycle.stop();
}
}
ã“ã®ä¾‹ã§ã¯ã€è¦ªã‚¯ãƒ©ã‚¹ Vehicle ã« start 㨠stop ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã—ã€åクラス Car 㨠Bicycle ãŒãれを継承ã—ã¦ã„ã¾ã™ã€‚ã¾ãŸã€Car クラスã«ã¯è¿½åŠ ãƒ¡ã‚½ãƒƒãƒ‰ã¨ã—㦠accelerate ã‚’ã€Bicycle クラスã«ã¯ ringBell ã‚’è¿½åŠ ã—ã¦ã„ã¾ã™ã€‚動作確èªã‚¯ãƒ©ã‚¹ VehicleTest ã§ãれãžã‚Œã®ã‚¯ãƒ©ã‚¹ã®ã‚ªãƒ–ジェクトを作æˆã—ã€ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™ã“ã¨ã§å‹•作を確èªã§ãã¾ã™ã€‚
継承ã®åŸºæœ¬
継承(Inheritance)ã¯ã€ã‚ªãƒ–ジェクト指å‘プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã®é‡è¦ãªæ¦‚念ã®ä¸€ã¤ã§ã™ã€‚ã“れã¯ã€æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ï¼ˆè¦ªã‚¯ãƒ©ã‚¹ã¾ãŸã¯ã‚¹ãƒ¼ãƒ‘ークラスã¨å‘¼ã°ã‚Œã‚‹ã“ã¨ãŒã‚りã¾ã™ï¼‰ã‹ã‚‰æ–°ã—ã„クラス(åクラスã¾ãŸã¯ã‚µãƒ–クラスã¨å‘¼ã°ã‚Œã‚‹ã“ã¨ãŒã‚りã¾ã™ï¼‰ã‚’作æˆã™ã‚‹ãƒ—ãƒã‚»ã‚¹ã§ã™ã€‚継承を使用ã™ã‚‹ã¨ã€æ—¢å˜ã®ã‚¯ãƒ©ã‚¹ã®æ©Ÿèƒ½ã‚’å†åˆ©ç”¨ã—ã€æ–°ã—ã„クラスã«ç‹¬è‡ªã®æ©Ÿèƒ½ã‚’è¿½åŠ ã§ãã¾ã™ã€‚
以下ã¯ã€ã€Œç¶™æ‰¿ã®åŸºæœ¬ã€ã«é–¢ã™ã‚‹è§£èª¬ã§ã™ã€‚
親クラスã¨åクラス
親クラス(スーパークラス)ã®ä½œæˆ:
親ã¨ãªã‚‹ã‚¯ãƒ©ã‚¹ã‚’作æˆã—ã¾ã™ã€‚ã“ã®ã‚¯ãƒ©ã‚¹ã¯ã€ä¸€èˆ¬çš„ãªæ©Ÿèƒ½ã‚„特性をæŒã£ã¦ã„ã¾ã™ã€‚
// 親クラス
class Vehicle {
void start() {
System.out.println("エンジンを起動ã—ã¾ã™ã€‚");
}
void stop() {
System.out.println("ã‚¨ãƒ³ã‚¸ãƒ³ã‚’åœæ¢ã—ã¾ã™ã€‚");
}
}
åクラスã®ä½œæˆã¨ç¶™æ‰¿:
åクラスã¯ã€extends ã‚ーワードを使用ã—ã¦è¦ªã‚¯ãƒ©ã‚¹ã‚’継承ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€åクラスã¯è¦ªã‚¯ãƒ©ã‚¹ã®ã™ã¹ã¦ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¨ãƒ•ィールドをå—ã‘ç¶™ãŽã¾ã™ã€‚
// åクラス1
class Car extends Vehicle {
void accelerate() {
System.out.println("アクセルをè¸ã¿ã¾ã™ã€‚");
}
}
// åクラス2
class Bicycle extends Vehicle {
void ringBell() {
System.out.println("ベルを鳴らã—ã¾ã™ã€‚");
}
}
メソッドã®è¿½åŠ
æ–°ã—ã„メソッドã®è¿½åŠ :
åクラスã§ã¯ã€è¦ªã‚¯ãƒ©ã‚¹ã«ã¯å˜åœ¨ã—ãªã„独自ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€åクラスã«ç‹¬è‡ªã®æŒ¯ã‚‹èˆžã„ã‚’ä»˜åŠ ã§ãã¾ã™ã€‚
インスタンスã®ä½œæˆã¨åˆ©ç”¨
public class VehicleTest {
public static void main(String[] args) {
// 親クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹
Vehicle vehicle = new Vehicle();
vehicle.start();
vehicle.stop();
// åクラス1ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹
Car car = new Car();
car.start();
car.accelerate();
car.stop();
// åクラス2ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹
Bicycle bicycle = new Bicycle();
bicycle.start();
bicycle.ringBell();
bicycle.stop();
}
}
ã“ã®ä¾‹ã§ã¯ã€è¦ªã‚¯ãƒ©ã‚¹ Vehicle ã« start 㨠stop メソッドãŒã‚りã€åクラス Car 㨠Bicycle ãŒãれを継承ã—ã€ç‹¬è‡ªã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’è¿½åŠ ã—ã¦ã„ã¾ã™ã€‚
継承ã®åˆ©ç‚¹
- コードã®å†åˆ©ç”¨:
- 親クラスã§å®šç¾©ã•ã‚ŒãŸæ©Ÿèƒ½ã‚„振る舞ã„ã‚’ã€åクラスãŒå†åˆ©ç”¨ã§ãã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€å†—é•·ãªã‚³ãƒ¼ãƒ‰ã‚’減少ã•ã›ã€ä¿å®ˆæ€§ã‚’å‘上ã•ã›ã¾ã™ã€‚
- 拡張性:
- åクラスã¯è¦ªã‚¯ãƒ©ã‚¹ã®æ©Ÿèƒ½ã‚’æ‹¡å¼µã§ãã¾ã™ã€‚æ–°ã—ã„ãƒ¡ã‚½ãƒƒãƒ‰ã‚„ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’è¿½åŠ ã™ã‚‹ã“ã¨ã§ã€ã‚ˆã‚Šè¤‡é›‘ãªæ©Ÿèƒ½ã‚’æŒã¤ã‚¯ãƒ©ã‚¹ã‚’作æˆã§ãã¾ã™ã€‚
ä½¿ã„æ–¹ã®ãƒã‚¤ãƒ³ãƒˆ
- is-a 関係:
- 継承ã¯ã€is-a é–¢ä¿‚ãŒæˆã‚Šç«‹ã¤ã¨ãã«ä½¿ç”¨ã—ã¾ã™ã€‚ã¤ã¾ã‚Šã€åクラスã¯è¦ªã‚¯ãƒ©ã‚¹ã®ä¸€ç¨®ã§ã‚ã‚‹ã¨ã„ã†é–¢ä¿‚ãŒæˆã‚Šç«‹ã¤å ´åˆã§ã™ã€‚
- 親クラスã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿:
- åクラスã¯è¦ªã‚¯ãƒ©ã‚¹ã®ã‚³ãƒ³ã‚¹ãƒˆãƒ©ã‚¯ã‚¿ã‚’呼ã³å‡ºã™å¿…è¦ãŒã‚りã¾ã™ã€‚ã“れã¯ã€è¦ªã‚¯ãƒ©ã‚¹ã®åˆæœŸåŒ–ãŒè¡Œã‚れるãŸã‚ã§ã™ã€‚
例
// 親クラス
class Vehicle {
void start() {
System.out.println("エンジンを起動ã—ã¾ã™ã€‚");
}
void stop() {
System.out.println("ã‚¨ãƒ³ã‚¸ãƒ³ã‚’åœæ¢ã—ã¾ã™ã€‚");
}
}
// åクラス1
class Car extends Vehicle {
void accelerate() {
System.out.println("アクセルをè¸ã¿ã¾ã™ã€‚");
}
}
// åクラス2
class Bicycle extends Vehicle {
void ringBell() {
System.out.println("ベルを鳴らã—ã¾ã™ã€‚");
}
}
public class VehicleTest {
public static void main(String[] args) {
// 親クラスã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹
Vehicle vehicle = new Vehicle();
vehicle.start();
vehicle.stop();
// åクラス1ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹
Car car = new Car();
car.start();
car.accelerate();
car.stop();
// åクラス2ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹
Bicycle bicycle = new Bicycle();
bicycle.start();
bicycle.ringBell();
bicycle.stop();
}
}
「継承ã®åŸºæœ¬ã€ã¯ã€ã‚ªãƒ–ジェクト指å‘プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°ã«ãŠã„ã¦å¼·åŠ›ãªãƒ„ールã§ã‚ã‚Šã€æŸ”軟ã§åŠ¹çŽ‡çš„ãªã‚³ãƒ¼ãƒ‰ã®æ§‹ç¯‰ã‚’サãƒãƒ¼ãƒˆã—ã¾ã™ã€‚é©åˆ‡ã«ä½¿ç”¨ã™ã‚‹ã“ã¨ã§ã€ã‚³ãƒ¼ãƒ‰ã®å†åˆ©ç”¨æ€§ã¨ä¿å®ˆæ€§ã‚’å‘上ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
「014 継承ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント