回答編集履歴

1

追加

2016/11/16 05:08

投稿

退会済みユーザー
test CHANGED
@@ -748,4 +748,152 @@
748
748
 
749
749
 
750
750
 
751
+
752
+
753
+
754
+
755
+
756
+
757
+ class A{
758
+
759
+
760
+
761
+ static int a1=10;
762
+
763
+
764
+
765
+ int a2=20;
766
+
767
+
768
+
769
+ public static void a3(){
770
+
771
+ System.out.println("a3");
772
+
773
+ }
774
+
775
+
776
+
777
+ public void a4(){
778
+
779
+ System.out.println("a4");
780
+
781
+ }
782
+
783
+
784
+
785
+ }
786
+
787
+
788
+
789
+ class B extends A{
790
+
791
+
792
+
793
+ static int b1=100;
794
+
795
+
796
+
797
+ int b2=200;
798
+
799
+
800
+
801
+ public static void b3(){
802
+
803
+ System.out.println("b3");
804
+
805
+ }
806
+
807
+
808
+
809
+ public void b4(){
810
+
811
+ System.out.println("b4");
812
+
813
+ }
814
+
815
+
816
+
817
+ }
818
+
819
+
820
+
821
+
822
+
823
+ の時、
824
+
825
+ A student=new B();
826
+
827
+ とすると、
828
+
829
+
830
+
831
+ System.out.println(student.a1+" "+student.a2);
832
+
833
+ student.a3();
834
+
835
+ student.a4();
836
+
837
+
838
+
839
+ と書いた時は
840
+
841
+ 10 20
842
+
843
+ a3
844
+
845
+ a4
846
+
847
+
848
+
849
+ と表示されますが、
850
+
851
+ b1,b2,b3(),b4()
852
+
853
+ を使用しようとするとコンパイルエラーが出ます
854
+
855
+ そして
856
+
857
+ B y=(B)student;
858
+
859
+
860
+
861
+ と B型にキャストして戻してやり
862
+
863
+
864
+
865
+ System.out.println(y.b1+ " "+y.b2);
866
+
867
+ y.b3();
868
+
869
+ y.b4();
870
+
871
+ System.out.println(y.a1+ " "+y.a2);
872
+
873
+ y.a3();
874
+
875
+ y.a4();
876
+
877
+ と書くと、
878
+
879
+ 100 200
880
+
881
+ b3
882
+
883
+ b4
884
+
885
+ 10 20
886
+
887
+ a3
888
+
889
+ a4
890
+
891
+ と表示されます
892
+
893
+ B型にキャストして戻した事で
894
+
895
+ 継承したAクラスの内容も使えるようになりました。
896
+
897
+
898
+
751
899
  ```