A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王丽 黑马帝   /  2011-7-28 15:51  /  1748 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

构造器Constructor是否可被override?

3 个回复

倒序浏览
黑马网友  发表于 2011-7-28 16:02:21
沙发
楼主的贴子好像没说明白吧?
回复 使用道具 举报
黑马网友  发表于 2011-7-29 09:39:02
藤椅

解释

就是构造器类的方法能不能重写?
回复 使用道具 举报
黑马网友  发表于 2011-7-29 09:57:36
板凳
:) 1、因为构造器是不能够被继承的,
:D2、因为构造器要和类名相同,如果子类重写一个与父类构造器名相同的方法,那么这两个类的名字不就一样了麽

3、我们用super来调用父类的构造器,但这不是重写。
4、使用this来重载同一个类中的构造器--同一个类中

如下程序[code=java]package cn.itcast.heima
class Person
{
        public String name;
        public int age;
         public String address ;
         //父类的构造器
        public Person(String name , int age)
        {
                this.size = size;
                this.name = name;
        }
         //构造器的重载
        public Person(String name , int age , String address)
        {
                //通过this来调用另一个重载的构造器
                  this(name , address);
                this.address = address;
        }

}
public Student extends Person
{
        public String color;
        public Student(String name , int age , String color)
        {
                //通过super调用来调用父类构造器的初始化过程
                super(name , age);
                this.color = color;
        }
         /*下面重写,编译根本不会通过,
                 public Person (String name , int age , String color)
        {
                //通过super调用来调用父类构造器的初始化过程
                super(name , age);
                this.color = color;
        }         
         */

        public static void main(String[] args)
        {
                Student s = new Student ("测试对象" , 22 , "红色");
                //输出Sub对象的三个属性
                System.out.println(s.name + "--" + s.age + "--" + s.color);
        }
}[/code]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马