• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wchenfeng

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

以Person作为父类,创建学生子类Student,并在子类中调用父类中某指定的构造方法。通过super()语句。

super()语句可以调用父类特定的构造方法

super()语句必须写在子类构造方法的第一行,否则编译时将出现编译错误

this()语句和super()语句都必须放在第一行,因此这两个语句无法同时出现在同一个构造方法当中。

super与this一样,指向对象,所以不能出现在static环境当中。

package com;
class Person {
    private String name;
    private int age;

    public Person() {
        System.out.println("调用了Person类的无参构造方法");
    }

    public Person(String name, int age) {
        System.out.println("调用了Person类的有参构造方法");
        this.name = name;
        this.age = age;
    }

    public void show() {
        System.out.println("姓名" + name + "年龄" + age);
    }
}
class Student extends Person
    {
        private String department;
        public Student()
        {
            System.out.println("调用了Student类的无参构造方法");
        }
        public Student(String name,int age,String dep)
        {
            super(name,age);//调用父类的有参构造方法 public Person(String name,int age)
            department=dep;
            System.out.println("我是"+department+"的学生");
            System.out.println("调用了Student类的有参构造方法Student(String name,int age,String dep)");
        }
    }

public class app8_2 {
    public static void main(String[] args)
    {

        Student stu1=new Student();//创建对象,并调用无参构造方法
        Student stu2=new Student("李小四",23,"信息系");//创建对象,并调用有参构造方法
        stu1.show();
        stu2.show();

    }

}

输出

 程序中即使没有明确的指定子类调用父类的构造方法,但程序执行时子类还是会先调用父类中没有的参数的构造方法,以便进行初始化操作。

去除29行super()语句,父类无参构造方法还是会被调用

 没有调用父类的有参构造方法,this.name=name; this.age.=age;

 

posted on 2022-04-12 20:02  王陈锋  阅读(89)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3