zoukankan      html  css  js  c++  java
  • 动手动脑3

    调用子类构造方法问题

      在子类构造方法中要将弗雷德构造方法放在第一位,原因是构造方法起到初始化的作用,在初始化时要先初始化父类在初始化子类,其顺序不能混乱,否则编译器将报错。

    方法覆盖

    1. 对于子类中覆盖的父类的方法,可以在子类覆盖的方法中运用super进行调用,也只能在子类中进行调用,无法通过实例化进行调用。
    2. 如果子类对象进行强制转换也无法调用父类被覆盖的方法,原因是在内存中还是子类,调用的还是子类的方法。
    3. 静态方法,以及被final修饰的方法不能被覆盖,但是对于静态方法可以进行重载;

    实例代码:

    public class ExplorationJDKSource {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            B a=new B();
            System.out.println(a.show());
            System.out.println(((A)a).show());
            
        }
    
    }
    class A{
        public String show()
        {
            return "this is A";
        }
    
    }
    class B extends A{
        public String show()
        {
            return "this is B";
        }
    }
    显示结果:
    this is B
    this is B
    public class ExplorationJDKSource {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            display();
            display("静态方法重载");
            
        }
        public static void display() {
            System.out.println("this is a static method");
        }
        public static void display(String s) {
            System.out.println("this is a static method"+s);
        }
    }
    结果输出:
    this is a static method
    this is a static method静态方法重载

    类型转换

       这个段代码中的d=m,和d=c会出现错误,前者报错的原因是父类不能当做子类的一个对象,后者报错的原因则是类型转换必须在继承层次类转换,即超类与子类之间.同级之间不能进行转换,

      有关对象的类型转换的总结

    1. 总是可以进行“父=子”之间的转换,也可以进行跨级跨层次之间的赋值,即父类可以是更高级别的父类
    2. 可以进行“子=(子)父”之间的转换,但是这种转换并不是永远可以进行,有事可以需要判断能否进行转换可以使用instanceof运算符进行判断。如果父类引用的正确的子类型,则可以执行。如果父类变量引用的是不相关的子类型,将会生成class castException异常。
    3. 决不能在不相关的任何类之间执行类的赋值或者类型转换。

    代码示例:

    public class ExplorationJDKSource {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
           Mammal m = new Mammal();
            Dog d=new Dog();
            Cat c=new Cat();
            //m=d;
            //d=m;
            d=(Dog)m;
            //d=c;
            //c=(Cat)m;
        }
        
    }
    class Mammal{
    }
    class Dog extends Mammal {}
    class Cat extends Mammal{}

     有关子类总结的问题(补充):

       如果自雷时被当作馥蕾诗用的那么,子类访问的字节段是父类的。

  • 相关阅读:
    1082 射击比赛 (20 分)
    1091 N-自守数 (15 分)
    1064 朋友数 (20 分)
    1031 查验身份证 (15 分)
    1028 人口普查 (20 分)
    1059 C语言竞赛 (20 分)
    1083 是否存在相等的差 (20 分)
    1077 互评成绩计算 (20 分)
    792. 高精度减法
    791. 高精度加法
  • 原文地址:https://www.cnblogs.com/huan-ch/p/9890532.html
Copyright © 2011-2022 走看看