• 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(),则默认调用父类的无参构造方法。

  • 相关阅读:
    Linux centos7 安装 phpMyAdmin
    centos7安装显示中文
    js限制按钮每隔一段时间才能再次点击
    PHPMailer 发送邮件
    jquery click事件中的return false
    安装composer
    生成目录树查看目录结构
    VMware桥接模式下虚拟机ping主机不通
    编译U-Boot时command not found的解决方法
    强制删除文件(夹)的方法
  • 原文地址:https://www.cnblogs.com/47Gamer/p/13900966.html
Copyright © 2020-2023  润新知