オーバーライドについて
今回は、JAVA学習中に出てきたオーバーライドについて書いていこうと思います。
オーバーライドを端的に説明すると、サブクラス内でスーパークラスで定義しているメソッドと同じ名前でメソッドを再定義することです。
継承関係があるクラスで、スーパークラスで定義したメソッドと目的が同じであるが、処理が異なるメソッドを定義する場合に使用をします。
サブクラスがインスタンス化されオーバーライドされたメソッドが呼び出された際は、
サブクラスで再定義したメソッドが優先的に呼び出されます。
[例]
class Super{
public void print(String s){
System.out.println("Super print :" + s);
}
}
class Sub extends Super{
public void print(String s){
s = "サブクラスでオーバーライドされた文字は"+ s + "です";
System.out.println("Sub print:" + s);
}
public class Main{
public static void main(String[] args){
Super obj1 = new Super(); //スーパークラスのインスタンス化
obj1.print("Java"); //スーパークラスの呼び出し
Sub obj2 = new Sub(); //サブクラスのインスタンス化
obj2.print("Java"); //オーバーライド:サブクラスの呼び出し
[実行結果]
Super print : Java
Sub print : サブクラスでオーバーライドされた文字はJavaです
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
[オーバーライドのルール]
➀メソッド名、引数リストがまったく同じであること。
➁戻り値はスーパークラスで定義したメソッドが返す型と同じか、その型のサブクラス型でなくてはいけない
➂アクセス修飾子は、スーパークラスと同じものか、それよりも公開範囲が広いものを使用しなければならない
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
サブクラスはスーパークラスのメンバをすべて引継ぐので、オーバーライドは「このメソッドについてはサブクラス側で処理を変えたい」という場合に有効。
参考文献:JavaプログラマSilver se11 信頼と実績の対策テキスト&問題集
山本道子 著
オーバーロードについて
今回は、JAVA学習中に出てきたオーバーロードについて書いていこうと思います。
オーバーロードを端的に言うと、1つのクラス内に同じ名前のメソッドや
コンストラクタ(クラスがインスタンス化された際に、最初に呼び出されるブロック)
を複数定義することです。
[同じ名前のメソッドを区別する仕組み]
➀メソッドの引数の並び
➁データ型
➂数
以上3点が異なっている点
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
メソッド名は同じため、引数を元に呼び出されるメソッドorコンストラクタが決められる。
[最後にメソッドのオーバーロード例を記載します]
void method(){}
void method(String a){}
void method(char[]a){}
void method(int a){}
void method(int a ,int b){}
以上のmethodを呼び出す際の引数の指定により、どのmethodが呼び出されるかが決まります。
次はオーバーライドについて書いてみようかと思います。
テックキャンプ学習を終えて。
テックキャンプの短期転職コースを6/8~8/14まで学習しました。
Macの使い方から始まり、前知識がなくても少しずつステップアップの出来るカリキュラムでした。また、教室で学習したい場合は週2回まで教室へ行け、入室前に検温や消毒を行うことになっており、感染対策がしっかりとされていて安心して教室へ通うことが出来ました。私は教室へは3回程しか行っていませんが、カリキュラム内でつまずいた際は、メンターさんにビデオ通話での画面共有やチャットコミュ二ケーションがすぐに出来る環境が準備されていた為、自宅学習による弊害は1度も感じることなく進めることが出来ました。
独学との比較で感じた点は、モチベーション管理の為のライフコーチという方がカリキュラムの進捗具合や、不安があれば面談を設定することが出来る点と、他の受講生の方達とチームで学習を進めていく為、お互いの分かること分からないことを補いながら学習を進めていくことができ、カリキュラムでインプットした内容をアウトプットする機会が設定されていて、独学に比べモチーベーション維持とアウトプット量が圧倒的に異なる点だと感じます。
全学習を終えて、あとは転職活動ですがキャリアアドバイザーの方によるサーポートを受けることができ、基礎の学習から転職まで一貫でサポート体制が整っている為、短期での転職を考えている方にオススメだと思います!
最後に開発時に主に使った言語:ツールを記載します。
Haml・SCSS・Ruby・Ruby on Rails・JavaScript・jQuery
プログラミング学習最終週。。
6/8からプログラミングスクールでの学習を開始して、8/14に卒業予定となりました。
最終課題は主に以下を用いて、フリマアプリを5人で実装を行ないました。
[HTML・CSS・Ruby・Ruby on Rails・JavaScript・jQuery・SQL・Git・ GitHub
段階を踏んで学習を続けていけば、知識は身に付くものだなと改めて感じることができた2ヶ月でした。
[最終課題で、感じたことをまとめていきます]
・Githubの扱いはチームメンバーのリポジトリに影響を与えてしまう可能性があるため慎重に行った方が良い。
・個人開発よりも緊張感を持って実装を行えたため、集中できた。
・実装をしたことがないGemを用いた実装も、検索をしていくつかのサイトの情報を組み合わせて考えると解決を糸口が見つかることがわかった。
・サーバーサイドの実装を行ったことで、カリキュラムの復習になった。
・複数開発でのコンフリクトの解決方法が、初めは調べながらになりましたが途中からはスムーズに解消できるようになっていた。
○結果::チーム開発でしか経験できないコンフリクトや、進捗管理を学べて良かったです!!
プログラミング学習32日目,個人アプリStart!
基礎と応用のカリキュラムを終え、本日からは個人アプリ開発が始まりました。
どんなアプリを作ろうか決まらなかったので、まずは使う言語を決めました。
需要のある言語は何かなと調べたところ、python,GOが伸びているということでした。
ですが、Webアプリケーションはrubyとrailsでまずは作っていき機能が足りなくなれば、新しい言語を使えば良いやという考えに落ち着きました。
結局は、haml,scss,javascript,rubyで、devise(ログイン機能),Github,Railsを元にして作成していくことにしました。
使う言語の大枠が決まったので、アプリの名前を決めました。。。
名前はひとまず置いといて、Webアプリケーションは、リモートワークしていたら自分が使いそうだなと思う物を作っていきます。
では、土日はプログラミング以外のことでインプットできることを探して参ります!!