zoukankan      html  css  js  c++  java
  • java向上转型的问题

    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.Set;
    class A{
    private String s1 = "A1" ;
    public String s2 = "A2" ;
    public String get(){
    return s2 ;
    }
    public String getS1(){
    return s1 ;
    }

    }
    class B extends A{
    private String s1 = "B1" ;
    public String s2 = "B2" ;
    public String get(){
    return s2 ;
    }
    public String getS1(){
    return s1 ;
    }
    }

    public class test{
    public static void main(String[] args){
    A b = new B() ;
    System.out.println(b.get()) ;
    System.out.println(b.getS1()) ;
    System.out.println(b.s2) ;
    }
    }

    结果:
    B2
    B1
    A2

    结论:
    类在向上转型后,private的属性依然是子类的属性,因为private不能直接访问,需要提供对外方法,而方法在向上转型后依然是子类的方法,所以private的属性不会改变而非private的属性在向上转型后都会改变.方法在向上转型后是不会改变的.
    总而言之,向上转型后,直接访问的属性会转型成基类的属性,方法还是子类的方法,通过子类的方法返回的字段值还是子类的值!

  • 相关阅读:
    面试
    二叉树- 二叉树直径
    排序算法
    JAVA编程
    JAVA编程
    JAVA中break和continue的区别
    HTTP的序列化和反序列化
    PL/SQL基础
    G. Game Design
    hdu 6703 array
  • 原文地址:https://www.cnblogs.com/dyc-cfc/p/4116391.html
Copyright © 2011-2022 走看看