Java中super的用法

Java中super的用法

super用于子类调用父类方法(private保护的方法除外)#

子类默认会调用父类的无参构造器(在子类无参构造器的第一行中应为super())#

1、注意如果父类定义了有参构造器那么子类便无法调用默认的无参构造器,解决方法应当给父类写出显式的无参构造器,或者子类调用父类构造器时添加参数super(参数);

super的注意点:#

1、super调用父类的构造方法,必须写在构造方法的第一行。
2、super必须只能能出现在子类的方法或者构造方法中
3、super和this不能同时调用构造方法。

super与this的区别#

1、代表的对象不同
this:本身调用者这个对象
super:代表父类对象的应用
this:没有继承也能用
super:只能在继承中使用
构造方法的区别
this():本类的构造
super():父类的构造

代码解析#

//执行方法public class application {    public static void main(String[] args) {        /*Demo09 student= new Demo09();        student.setName("dalao");        student.setAge(1000);//不合法数据        System.out.println(student.getName()+"年龄"+student.getAge());//println属于方法的重载        student.setAge(68);//合法数据        System.out.println(student.getAge());//println属于方法的重载         */        Demo11 student = new Demo11();        student.test01("小明");        student.test02();    }}
//父类方法public class Demo10 /*extends Object*/{    public Demo10(){        System.out.println("父类无参构造器已执行");    }    protected String name="小明同学";    public void print(){//假如此处改为private私有其实也可继承只不过应当使用类如get,set方法来访问子类不能直接调用        System.out.println("我是父类");    }}
//子类方法    public Demo11(){        super();//子类会默认调用父类的无参构造器        System.out.println("子类无参构造器已执行");        //super();而且调用父类无参构造器必须放在代码第一行    }    private String name ="xiaomingtongxue";    public void test01(String name){        System.out.println(name);        System.out.println(this.name);        System.out.println(super.name);    }    public void print(){        System.out.println("我是子类");    }    public void test02(){        print();        this.print();        super.print();    }

结果#

父类无参构造器已执行子类无参构造器已执行小明xiaomingtongxue小明同学我是子类我是子类我是父类

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部