Java初心者用の学習めもです。
メソッドやフィールド、クラスの違いやコンストラクタとは?について記録しています。
#メソッド
・メソッドは、繰り返し使える処理のかたまり(関数)のこと
・メソッド名の後()内に引数を指定できる
[修飾子] [戻り値のデータ型] メソッド名(引数){
(メソッドの処理内容)
}
・値を返す場合は「return」を使う
//クラス
public class MyTest{
//sayHelloメソッド
public static String sayHello(String name){
return "Hello" + name;
}
//mainメソッド
public static void main(String[] args){
String msg = sayHello("Bob");
System.out.println(msg);
}
}
#メソッドのオーバーロード
・オーバーロードとは、同クラスの中で同じメソッド名で、引数の型や数や並び順が違うメソッドを2つ以上定義すること
public class MyTest {
public static void sayHello(String name) {
System.out.println("Hello" + name);
}
// オーバーロード
public static void sayHello() {
System.out.println("Hello!everyone!");
}
public static void main(String[] args) {
sayHello();//引数なし
sayHello("Bob"); //String型の引数を指定
}
}
#フィールド
・フィールドとは、クラスの内部に定義した変数のこと
・フィールドの変数は、各メソッド内で利用することができる
[修飾子] データ型 フィールド変数名; //フィールドの書き方
#クラス
・クラスとは、プログラムを実行するための処理をまとめたオブジェクトのこと
・クラスにはメソッドとフィールドを定義する
・class の後にクラス名を定義する(最初は必ず大文字)
・クラスは参照型のため、メモリ領域にデータを確保するためには「new」する必要がある
・newすることを「インスタンス化」と呼ぶ
//User型クラス
class User {
String name = "Me!"; // フィールド初期化
void sayHello() {
System.out.println("hello");
}
}
public class MyTest {
public static void main(String[] args) {
User tom;//User型のtomを宣言
tom = new User(); // インスタンス化
System.out.println(tom.name);
tom.sayHello();
}
}
#コンストラクタ
・コンストラクタは、インスタンス化の際に自動で実行されるメソッド(処理)のこと
・コンストラクタ名はクラス名と同じ名前で以下のように書く
・()内に引数を指定できる
public クラス名(){
処理内容;
}
・コンストラクタでインスタンスのフィールドにアクセスするには「this」と書く
・「this」は このインスタンス という意味
・コンストラクタはメソッドのため、オーバーロードもできる
class User {
String name;
// コンストラクタ
User(String name) {
this.name = name;
}
// コンストラクタ
User() {
// this.name = "Me!";
this("Me!");
}
//メソッド
void sayHello() {
System.out.println("hello! " + this.name);
}
}
public class MyTest {
public static void main(String[] args) {
User tom;
//クラスのnameフィールドをtomに指定
tom = new User("tom");
System.out.println(tom.name);
//hello!Me!
tom = new User();
tom.sayHello();
}
}
#クラスの継承
・クラスの継承とは、既にあるクラスの共通する機能を引き継ぐこと
・継承元をスーパークラス(親クラス)、継承先をサブクラス(子クラス)とよぶ
・以下のように書く
class サブクラス名 extends スーパークラス名 {}
・親クラスのコンストラクタは「super()」で指定できる
・親クラスのメソッドを上書きすることを「オーバーライド」という
class User {
String name;
User(String name) {
this.name = name;
}
void sayHello() {
System.out.println("hello! " + this.name);
}
}
//クラスの継承
class PopUser extends User {
PopUser(String name) {
super(name);//親クラスコンストラクタの引数を指定
}
void sayThanks() {
System.out.println("Thanks! " + this.name);
}
// オーバーライド
@Override//オーバーライドを明示できる
void sayHello() {
System.out.println("[pop] hello! " + this.name);
}
}
public class MyTest {
public static void main(String[] args) {
User tom = new User("tom");//1行でインスタンス化できる
System.out.println(tom.name);
tom.sayHello();
PopUser bob = new PopUser("bob");
System.out.println(bob.name);
bob.sayHello();
}
}
ここまで。