忍者ブログ

学習用

2025
04,28

«[PR]»

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2020
07,14
//抽象クラス(抽象するクラスは具象クラスと言ったりする
//以下のクラスを継承するためにはabstractというきーわーぢをつけてあげればOK
abstract class User {
//sayHi()メソッドにもabstractをつけてあげると具象クラスの方で
//実装されなかった場合にエラーを返してくれます。
//このように具象クラスの方に実装を任せるメソッドを抽象メソッドと呼ぶ。
  public abstract void sayHi()
}
 class JapaneseUser extends User{
//sayHiメソッドをオーバーライドしているのがわかりやすいように
//アノテーションをかく!!
@Override
public void sayHi(){
System.out.println("こんにちは");
}
}
 class AmerivanUser extends User{
//ここではsayHi()を実装しなかった場合にちゃんとエラーになるかも
//確かめてみるためにコメントアウトにしておきます!
//@Override
//public void sayHi(){
//System.out.println("こんにちは");
}
}
  public final void sayHi() {
    System.out.println("hi! " + this.name);
  }
}
class AdminUser extends User {
  public AdminUser(String name) {
    super(name);
  }
  @Override
  public void sayHi() {
    System.out.println("[admin] hi! " + this.name);
  }
}
public class MyApp {
  public static void main(String[] args) {
    User tom = new User("tom");
  }
}


実行結果は↓

C:\Users\81801>javac -encoding utf-8 MyApp.java
MyApp.java:17: エラー: final Userからは継承できません
class AdminUser extends User {
                        ^
MyApp.java:9: エラー: final変数VERSIONに値を代入することはできません
    User.VERSION = 1.2;
        ^
MyApp.java:24: エラー: AdminUserのsayHi()はUserのsayHi()をオーバーライドできません
  public void sayHi() {
              ^
  オーバーライドされたメソッドはfinalです
エラー3個
C:\Users\81801>




PR
2020
07,14

«final_1»

// final: 変更ができない。オーバーライドされたメソッドがfinalだと
//値を変更することができない。
final class User {
  protected String name;
  private static final double VERSION = 1.1;
  public User(String name) {
    this.name = name;
    User.VERSION = 1.2;
  }
  public final void sayHi() {
    System.out.println("hi! " + this.name);
  }
}
class AdminUser extends User {
  public AdminUser(String name) {
    super(name);
  }
  @Override
  public void sayHi() {
    System.out.println("[admin] hi! " + this.name);
  }
}
public class MyApp {
  public static void main(String[] args) {
    User tom = new User("tom");
  }
}
2020
07,14

«static_1»

staticを使ったやつ
class User {
  private String name;
  private static int count = 0; 
  public User(String name) {
    this.name = name;
//インスタンス化するためにこちらのcountを1ずつふやしていく
//staticのフィールドに対してアクセスるにはクラス名を使えばいいので
//『User.count++;』のようにかいてあげるとよい
    User.count++;
  }
  public static void getInfo() { // クラスメソッド
    System.out.println("# of instances: " + User.count);
  }
}
//mai()は特殊なメソッドではあるのですがJavaの仮想マシンがMyAppの
//インスタンスを作らずにいきなり実行できるようにstaticメソッドになっていると
//理解しておくといいでしょう。
public class MyApp {
  public static void main(String[] args) {
    User.getInfo(); // 0
    User tom = new User("tom");
    User.getInfo(); // 1
    User bob = new User("bob");
    User.getInfo(); // 2
  }
}
2020
07,13
アクセス修飾子は
Javaでは一つのソースファイルにつき
publicなクラスは一つしかもてない!
2020
07,13
アクセス修飾子とは
public 
protected
private
といった修飾子の総称でクラスやそのメンバーがどこからアクセス可能であるかを決定します。

それぞれの概要を下記に記載していきますと。

◆public 
→すべてのクラスからアクセスできる


◆protected
→現在のクラスとサブクラスから書くセスできる

◆なし
→現在のクラスと同じパッケージのクラスからアクセスできる

◆private

→現在のクラスからだけアクセスできる!

まだなんとなくしかわからないけどとりあえず、いじょう!

[1] [2] [3] [4] [5] [6] [7] [8] [9]


« 前のページ:: 次のページ »
プロフィール
HN:
No Name Ninja
性別:
非公開
カテゴリー
最新記事
P R

Powered by Ninja.blog * TemplateDesign by TMP
忍者ブログ[PR]