• Java子类继承父类执行顺序


    new一个类对象,类中各部分执行顺序:静态代码块->非静态代码块->构造函数->一般方法。

    public class father {
        
        private String name;
    
        father(){
           System.out.println("--父类的无参构造函数--");
        }
    
        father(String name){
           this.name=name;
           System.out.println("--父类的有参构造函数--"+this.name);
        }
    
        static{
           System.out.println("--父类的静态代码块--");
        }
    
        {
           System.out.println("--父类的非静态代码块--");
        }
    
        public void speak(){
           System.out.println("--父类的方法--");
        }
    
        public static void main(String[] args) {
            System.out.println("--父类主程序--");
            father father=new father("父亲的名字");
            father.speak();
         }
        
    }

    运行如上main方法结果为:

    创建子类继承该父类测试执行顺序:

    public class Son extends father{
         private String name;
    
            static{
               System.out.println("--子类的静态代码块--");
            }
    
            {
               System.out.println("--子类的非静态代码块--");
            }
    
            Son(){
               System.out.println("--子类的无参构造函数--");
            }
    
            Son(String name){
               this.name=name;
               System.out.println("--子类的有参构造函数--"+this.name);
            }
    
            @Override
            public void speak(){
               System.out.println("--子类Override了父类的方法--");
            }
    
            public static void main(String[] args) {
                   System.out.println("--子类主程序--");
    
                   Son son=new Son("儿子的名字");
                   son.speak();
            }
    }

    运行如上main方法结果如下:

    运行如下main方法:

    public static void main(String[] args) {
          System.out.println("--子类主程序--");
    
          Son son=new Son("儿子的名字");
          son.speak();
    
          father father=new father("父亲的名字");
          father.speak();
    }

    结果如下:

    总结:

    new一个类对象,类中各部分执行顺序:静态代码块->非静态代码块->构造函数->一般方法。

       子类继承父类各部分执行顺序为:父静态代码块->子静态代码块->父非静态代码->父无参构造函数->子非静态代码块->子构造函数->方法。

    注意:创建子类对象调用子类的构造方法的时候会先调用父类的构造方法,在子类的构造方法中调用父类的构造方法是用super(),如果没有写super(),则默认调用父类的无参构造方法。

  • 相关阅读:
    How To Move a MySQL Data Directory to a New Location on Ubuntu 16.04
    Mysql Docker Container Command
    svg_png
    png格式图片转为svg格式图片
    Ubuntu Server如何配置SFTP(建立用户监狱)
    ubuntu用户添加adduser, useradd并给予sudo权限
    Setup FTP server on Ubuntu 14.04
    Ubuntu Server 16.04.1系统安装
    1.Linux下生成密钥
    Linux查看设备命令
  • 原文地址:https://www.cnblogs.com/47Gamer/p/13900966.html
Copyright © 2020-2023  润新知