🟦 TypeScript のオブジェクト指向入門
1. クラス(Class)
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
speak(): void {
console.log(`${this.name} が鳴いています`);
}
}
const dog = new Animal("ポチ");
dog.speak(); // ポチ が鳴いています
2. 継承(Inheritance)
class Dog extends Animal {
bark(): void {
console.log(`${this.name} がワンワンと吠えました`);
}
}
const shiba = new Dog("しば");
shiba.speak(); // しば が鳴いています
shiba.bark(); // しば がワンワンと吠えました
3. アクセス修飾子(Access Modifier)
修飾子 | 意味 |
public | どこからでもアクセス可能(デフォルト) |
private | クラス内からのみアクセス可能 |
protected | クラス内と継承先からアクセス可能 |
class User {
public name: string;
private password: string;
constructor(name: string, password: string) {
this.name = name;
this.password = password;
}
checkPassword(pw: string): boolean {
return this.password === pw;
}
}
const u = new User("Kenji", "1234");
console.log(u.name); // OK
// console.log(u.password); // ❌ エラー: privateプロパティ
4. インターフェースとクラスの連携
interface Speakable {
speak(): void;
}
class Parrot implements Speakable {
speak(): void {
console.log("こんにちは!オウムです");
}
}
5. 抽象クラス(abstract class)
abstract class Creature {
abstract makeSound(): void;
move(): void {
console.log("生き物が動きました");
}
}
class Cat extends Creature {
makeSound(): void {
console.log("にゃーん");
}
}
const neko = new Cat();
neko.makeSound(); // にゃーん
neko.move(); // 生き物が動きました
6. Getter / Setter
class Product {
private _price: number = 0;
set price(value: number) {
if (value >= 0) {
this._price = value;
}
}
get price(): number {
return this._price;
}
}
const p = new Product();
p.price = 100;
console.log(p.price); // 100
🎓 オブジェクト指向まとめ
機能 | 目的 |
クラス | 設計図としてオブジェクトの構造を定義 |
継承 | コードの再利用や共通化 |
アクセス修飾子 | 情報の隠蔽 |
インターフェース | クラスが従うべき構造を定義 |
抽象クラス | 共通処理+処理の実装を強制 |
getter/setter | 値への安全なアクセスや加工 |