• 子类构造器


    class Person{
        String name;
        int age;
        //public Person(){}
        public Person(String name, int age){
            this.name = name;
            this.age = age;
            
            System.out.println("父类构造器");
            }
        public void info(){
            System.out.println(name + "    " + age);
            }
        }
    public class ManTest extends Person{
        public ManTest(String name, int age){
            this.name = name;
            this.age = age;
            //super(name, age);
            }
        public static void main(String[] args){
            ManTest mt = new ManTest("zed", 18);
            }
        }

    上面程序会报错,无法将Person中的构造器给定类型。这是因为在Xx类里定义了一个带参数的构造方法,那么这个Xx类就没有无参数的构造方法了。子类在继承父类时,如果没有相同的带参构造方法,那么他就需要在其构造方法中明确的通过super()调用父类的带参构造方法,否则构造不出父类,从而也构造不出他自己了。你如果在父类中写个不带参数的构造方法,就可以不用实现父类的带参构造方法了。

    在父类构造器中添加无参构造器即可:

    class Person{
        String name;
        int age;
        //无参父类构造器
        public Person(){}
        public Person(String name, int age){
            this.name = name;
            this.age = age;
            
            System.out.println("父类构造器");
            }
        public void info(){
            System.out.println(name + "    " + age);
            }
        }
    public class ManTest extends Person{
        public ManTest(String name, int age){
            this.name = name;
            this.age = age;
            }
        public static void main(String[] args){
            ManTest mt = new ManTest("zed", 18);
            }
        }

    或者在子类调用父类带参构造器:

    class Person{
        String name;
        int age;
        public Person(String name, int age){
            this.name = name;
            this.age = age;
            
            System.out.println("父类构造器");
            }
        public void info(){
            System.out.println(name + "    " + age);
            }
        }
    public class ManTest extends Person{
        public ManTest(String name, int age){
            //调用父类带参构造器
            super(name, age);
            }
        public static void main(String[] args){
            ManTest mt = new ManTest("zed", 18);
            }
        }

       子类构造方法前要先调用父类构造方法,如果父类没有无参构造,就需要通过super()调用父类有参构造。如果父类有无参构造方法,子类会直接调用父类的无参构造。

  • 相关阅读:
    Ubuntu环境下mysql常见的操作
    Ubuntu 下 Galera cluster for MySQL 集群安装
    Linux如何查看进程、杀死进程、启动进程等常用命令
    Ubuntu16.04配置静态IP地址
    Linux软件包管理之源码包、脚本安装包
    Linux软件包管理之yum在线管理
    Linux软件包管理之RPM命令
    Linux文本编辑器vim
    Linux常用命令之网络和关机重启命令
    Linux常用命令之压缩和解压缩命令
  • 原文地址:https://www.cnblogs.com/changzuidaerguai/p/6279270.html
Copyright © 2020-2023  润新知