• 动手动脑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{}

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

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

  • 相关阅读:
    JAVA相关基础的知识吧
    Java测试调用.net 接口服务
    Java测试内存信息
    Java测试普通Java接口记录-TestHrmInterface
    那些年学不会的操作(写法/...)——记录一些靠搜索做过但总是记不住的东西
    正确的sybase批量插入语法
    新ZJJG项目相关接口开发记录-微信制证组成浅析
    bip项目的启用/调试+ 问题记录
    记录数组问题
    模糊匹配的查询条件/ 给下拉框加提示呢
  • 原文地址:https://www.cnblogs.com/huan-ch/p/9890532.html
Copyright © 2020-2023  润新知