Class
- オブジェクトを定義、オブジェクトの設計図または枠組
Object(オブジェクト)
- 実際に存在するもの、ソフトウェアで実装される対象
Instance
- Classをもとにソフトウェア世界に実装された具体的な実体
- オブジェクト化を実体化するとインスタンスになる。
- オブジェクトがメモリに割り当てられ、実際に使用される際にインスタンスと呼ばれる。
オーバーローディング(Overloading)
-
メソッドの名前は同じだが、媒介変数の個数やタイプが異なる
public class Calculator{
public void sum(int x,int y) {
int sum= x+y;
System.out.println(sum);
}public void sum(float x, float y) {
float sum = x+y;
System.out.println(sum);
}
}
最初のsum()にはインスタンス値をint(整数)のみ2つ入力
2番目のsum()にはインスタンス値をfloat(ミス)だけ
このような過程をオーバーロード
このようにメソッドの名前はsum()で同じだが、タイプが違う場合!
オーバーライディング(Overriding)
- 上位クラスのメソッドを下位クラスで再定義
- メソッドの名前やパラメータの本数、タイプとも一致しなければならない, 相続する下位クラスで使用
オーバーロードは従来にない新しいメソッドを作ること
オーバーライディングは既存のメソッドを再定義することに違いがある
public class People {
public void print(){
System.out.println("私は人です。");
}
}
public class Man extends People{
@Override
public void print() {
System.out.println("私は男です。");
}
}
1.Peopleという親クラスを作った
2.Peopleクラスにはprint()というメソッドが定義されている状態である
3.Manクラスを作る。 ただし、該当クラスはPeopleを相続したクラスだ
4.相続したクラスは親クラスにあるメソッドをオーバーライドできる権限を持つ
print()というメソッドは、実際に使用されるmainクラスでどのオブジェクトを生成するかによって出力される結果値が以下のように変わる
public class Test {
public static void main(String[] args) {
People People = new People();
people.print();
Man man = new Man();
man.print();
}
}
私は人です。-> 私は男です。結果がChange!
抽象クラス
- abstract'という予約語を使ってclassを生成
- 抽象クラスには抽象メソッド(abstractmethod)が使用できるが、そのメソッド内にはインスタンスが存在してはならない
public abstract class Parent {
public abstract void printString();
public void print() {
System.out.println("抽象クラス内にある基本メソッド");
}
}
このようにabstarctキーワードをつけた抽象メソッド(printString)を作ることができる
また、抽象メソッドでないメソッドも作ることができる
抽象クラスは基本的に完成していないクラス、メソッドと考えればいい
そのため、相続を通じて抽象クラスを完成させた後に使用しなければならない
public class Child extends Parent{
@Override
public void printString() {
//TODO Auto-generated method stub
System.out.PrintIN("抽象クラス内にある基本メソッド");
}
}