1
0

More than 3 years have passed since last update.

アップキャストとダウキャストとコンストラクタ

Posted at

import java.util.*;

interface Sample{
//定数はインターフェースに定義できるよ
public final static int num=10;
//抽象メソッド public abstractは自動で作られる
public abstract void hoge();

}

interface Test{
//定数はインターフェースに定義できるよ
public final static int num=10;
//抽象メソッド public abstractは自動で作られる
public abstract void exe();

}

//多重実現
class SampleImp implements Sample,Test{
public void hoge(){

}

public void exe(){

}

}

class A{

public int i=10;

 A(int i){
    System.out.println("Aのコンストラクタ");
}

void test(){
    System.out.println("void test A");
}

void test2(){
    System.out.println("void test2 A");
}

}

class B extends A{

public int i=100;

B(){
    super(100);
    System.out.println("Bkon");
}

@Override
void test(){
    System.out.println("void test B");
}

 void test3(){
    System.out.println("void test3 B");
}

}

public class Main {
public static void main(String[] args) throws Exception {

    //キャストアップの例
    // サブクラスからスーパーへキャストアップした場合、変数はより近い方10が使用され、メソッドはオーバーライドさ
    //れたテスト2と出力、Bのメソッドは上書きされていないので使おうとするとエラー

    //注意 フィールド変数はスーパークラス、メソッドはサブクラスが優先される、という点です。
    A b= new B();

    b.test();
    //b.test3();

    //ダウンキャストの例↓アップキャストしたものだけを戻せる 調べる方法として instanceof  を使用することもできる

    // アップキャスト(暗黙的)
    A bb= new B();

    // ダウンキャスト(明示的)
    B bbb = (B)bb;

    // SubClassのメソッド
    bbb.test();
    bbb.test3();



}

}

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0