zoukankan      html  css  js  c++  java
  • 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(),则默认调用父类的无参构造方法。

  • 相关阅读:
    python接口自动化测试二十四:上传多个附件,参数化
    python接口自动化测试二十三:文件上传
    python接口自动化测试二十二:文件下载
    python接口自动化测试二十一:类和方法
    Delphi开发ocx插件的调试
    Confluence 6 推荐的更新通知设置和禁用
    Confluence 6 配置推荐更新邮件通知默认的初始化设置
    为 Confluence 6 分发包设置一个邮件会话
    Confluence 6 测试电子邮件设置
    为 Confluence 6 配置发送邮件消息
  • 原文地址:https://www.cnblogs.com/47Gamer/p/13900966.html
Copyright © 2011-2022 走看看