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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sbeeqnui1987 中级黑马   /  2012-6-12 21:38  /  1450 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

构造方法是一种特殊的方法,没有构造方法就不能创建一个新对象。实际上,不仅要调用对象实际类型的构造方法,还要调用其父类的构造方法,向上追溯,直到Object类。构造方法不必显式地调用,当使用new关键字时,相应的构造方法会自动被调用。

1、构造方法的规则。
A、构造方法能使用任何访问修饰符。包括private,事实上java类库有很多都是这样的,设计者不希望使用者创建该类的对象。
B、构造方法的名称必须与类名相同。这样使得构造方法与众不同,如果我们遵守sun的编码规范,似乎只有构造方法的首字母是大写的。
C、构造方法不能有返回类型。
反过来说,有返回类型的不是构造方法
    public class Test {
        int Test(){
            return 1;
        }
    }
这个方法是什么东西?一个冒充李逵的李鬼而已,int Test()和其他任何普通方法没什么两样,就是普通的方法!只不过看起来很恶心,类似恶心的东西在考试卷子里比较多。

D、如果不在类中创建自己的构造方法,编译器会自动生成默认的不带参数的构造函数。
这点很容易验证!写一个这样简单的类,编译。
class Test {
}
对生成的Test.class文件反编译:javap Test,可以看到:
D:"JavaCode"bin>javap Test
Compiled from "Test.java"
class Test extends java.lang.Object{
    Test();
}
看到编译器自动添加的默认构造函数了吧!

E、如果只创建了带参数的构造方法,那么编译器不会自动添加无参的构造方法的!

F、在每个构造方法中,如果使用了重载构造函数this()方法,或者父类的构造方法super()方法,那么this()方法或者super()方法必须放在第一行。而且这两个方法只能选择一个,因此它们之间没有顺序问题。

G、除了编译器生成的构造方法,而且没有显式地调用super()方法,那么编译器会插入一个super()无参调用。

评分

参与人数 1黑马币 +1 收起 理由
熊雪莲 + 1

查看全部评分

1 个回复

倒序浏览
总结的很好哦~我刚看完这一部分的视频~赞~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马