【PHP入門】クラスの継承について
extends
クラスのメンバを他のクラスで継承するメソッド
extendsの使い方
class クラス名 extends 継承元クラス名 { 処理 }
注意点
親クラスでprivate修飾子による権限が指定されている場合は、そのメンバを引き継ぐことはできない。
サンプル
<?php class ParentClass{ public function workItem1($str){ echo $str.'ParentClass <br>'; } public function workItem2(){ echo 'Processing of workItem2 of ParentClass. <br>'; } } class ChildClass extends ParentClass{ public function workItem1($str){ echo $str.'ChildClass <br>'; } } //インスタンスを生成 $parent = new ParentClass(); $child = new ChildClass(); //メソッドの呼出し $parent->workItem1('Processing of '); $child->workItem1('Processing of '); $parent->workItem2(); $child->workItem2(); ?>
実行結果
Processing of ParentClass Processing of ChildClass Processing of workItem2 of ParentClass. Processing of workItem2 of ParentClass.
【Ruby入門】
・クラスの継承
class 新しいクラス名 < 元となるクラス名
【Ruby入門】配列と繰り返し
foods = ["たまご", "お肉", "野菜"] # each文を用いて、要素ごとに「○○を話せます」と出力してください foods.each do |food| puts "#{food}を食べます" end
【Java入門】
Java言語は、コンパイラ、インタプリタという2つのソフトウェアを使って、機械語に翻訳されます。
コンパイラとは
人間が分かる言葉で書かれたソースコードをコンピュータが分かる言葉に変換してくれるプログラムのことです。
インタプリタとは
コンピュータが分かる言葉を解釈しながら、実行することです。
問題:Javaで「Hello,World」と表示させよう!
答え:
class Sample1 { public static void main(String[] args){ System.out.println("Hello World!"); } }
実行:
$ javac Sample1.java $ java Sample1
public static void main(String args)とは?
publicとは
どのクラスからもアクセスできることを意味します。それに対し、privateは同一のクラス内でしかアクセスできないことを意味します。
staticとは
インスタンス化しなくてもメソッドにアクセスできることを意味します。
mainとは
メソッドを指します。Javaコマンドの実行時に呼び出されます。
void
戻り値の型を意味します。
(String args)
引数を意味します。
これがおれのよくつかうgitコマンドだ。
ブランチを作成する。
git checkout -b ブランチ名
【Ruby入門】インスタンスからクラスの変数を取得・変更する方法
Rubyは以下の図のようにインスタンスからクラスにアクセスできない仕様になってます。
# -*- coding: utf-8 -*- require 'date' # Musicクラスをつくる class Music # Musicクラスのインスタンスを初期化する def initialize(title) @title = title end end # Musicクラスのインスタンスを作成する music = Music.new "戦場のメリー・クリスマス" puts "曲名:" + music.title
一件、このコードは問題ないように見えますが、@titleは「クラスインスタンス変数」と呼ばれる変数として扱われるため、下記のエラーが生じアクセスすることができないのです。 実行結果:
undefined method `title' for #<Music:0x0000000003f91c28> (NoMethodError)
では、インスタンスからクラスの変数を取得・変更するにはどのようにすればよいでしょうか?
それには、ゲッターを使います。
ゲッター
オブジェクトの属性を取得する操作です。以下のように、ゲッターを使うとインスタンスから変数@titleを取得することが可能となります。
# -*- coding: utf-8 -*- # Musicクラスをつくる class Music # Musicクラスのインスタンスを初期化する def initialize(title) @title = title end # title属性のゲッターメソッド def title @title end end # Musicクラスのインスタンスを作成する music = Music.new "戦場のメリー・クリスマス" puts "曲名:" + music.title
実行結果:
曲名:戦場のメリー・クリスマス
ゲッターにより、インスタンスから変数を取得することができるようになりました。では、インスタンスの値を変更するにはどのようにしたらよいでしょうか?セッターを使います。
# -*- coding: utf-8 -*- # Musicクラスをつくる class Music # Musicクラスのインスタンスを初期化する def initialize(title) @title = title end # title属性のゲッターメソッド def title @title end # title属性のセッターメソッド def title=(value) @title = value end end # Musicクラスのインスタンスを作成する music = Music.new "戦場のメリー・クリスマス" # セッターを使ってtitileの値を変更する music.title = "ライディーン" puts "曲名:" + music.title
ゲッターとセッターを使うことにより、オブジェクトの値を取得・設定することが可能となりました。しかし、多数のインスタンス変数の全てについて、ゲッター・セッターメソッドを用いるのはかなり煩雑です。そこで、アクセサを使います。
アクセサとは
オブジェクトの属性を取得、設定する操作のことです。ゲッターとセッターを併せ持った操作です。
# -*- coding: utf-8 -*- # Musicクラスをつくる class Music # Musicクラスのインスタンスを初期化する def initialize(title,composer) @title = title @composer = composer end # title属性、age属性のアクセサ attr_accessor :title, :composer # Musicクラスのインスタンスの文字列表現を返す def to_s "#@title, #@composer" end end # Musicクラスのインスタンスを作成する music = Music.new '戦場のメリークリスマス', '坂本龍一' # アクセサを使ってtitileの値を変更する music.title = "ライディーン" puts "曲名:" + music.title + "\n作曲者:" + music.composer
これにより、ゲッターとセッターを一つ一つ定義することなく、オブジェクトの値を取得・更新することが可能です。とても、便利な操作ですので、この際に抑えておきましょう!
エラーコード備忘録
※常時更新中 - "\u3000":余計な全角が入っている。