方法和构造器的区别

来源:互联网 发布:rhino mac授权码 编辑:程序博客网 时间:2024/06/06 10:06

(1)功能和作用的不同 
   构造器是为了创建一个类的实例。这个过程也可以在创建一个对象的时候用到:Platypus p1 = new Platypus(); 
相反,方法的作用是为了执行Java代码。

    (2)修饰符,返回值和命名的不同 
    构造器和方法在下面三个方便的区别:修饰符,返回值,命名。和方法一样,构造器可以有任何访问的修饰: public, protected, private或者没有修饰(通常被package 和 friendly调用). 不同于方法的是,构造器不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized。 
    返回类型也是非常重要的。方法能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void。 
    (3)两者的命名。
     构造器使用和类相同的名字,而方法则不同。按照习惯,方法通常用小写字母开始,而构造器通常用大写字母开始。构造器通常是一个名词,因为它和类名相同;而方法通常更接近动词,因为它说明一个操作。
    (4)"this"的用法。
     构造器和方法使用关键字this有很大的区别。方法引用this指向正在执行方法的类的实例。静态方法不能使用this关键字,因为静态方法不属于类的实例,所以this也就没有什么东西去指向。构造器的this指向同一个类中,不同参数列表的另外一个构造器、例如:在我们上课做过的BirthDate类中:
public  class  BirthDate{
   private    int year;
   private    int month;
   private    int day;
   BirthDate(int   ye){
       year = ye;
   }
   BirthDate(){
      this(1987);
   }

   public static void main(String args[]) { 

                   BirthDate b1 = new BirthDate(2009); 

                   BirthDate b2 = new BirthDate(); 

   } 


}
在上面的代码中,有2个不同参数列表的构造器。第一个构造器,给类的成员year赋值,第二个构造器,调用第一个构造器,给成员变量year一个初始值 1987.在构造器中,如果要使用关键字this,那么,必须放在第一行,如果不这样,将导致一个编译错误。
    (5)编译器自动加入代码
    编译器自动加入代码到构造器,当我们写一个没有构造器的类,编译的时候,编译器会自动加上一个不带参数的构造器.相信这一点大家是没有问题的啦。

    (6)继承 
    构造器是不能被继承的。子类可以继承超类的任何方法。看看下面的代码: 
public class Example { 
            public void HelloWorld { 
                        system.out.println("HelloWorld"); 
            } 
            Example() {} 

          public class SubClass extends Example { 


         类 SubClass 自动继承了父类中的HelloWorld方法,但是,父类中的构造器 Example()却不能被继承

(1)带形式参数的构造器:
         构造器和其它方法一样,也可以有形式参数。构造器有了形式参数,我们就可以在初始化对象的时候提供实际参数。java为了让名字相同而形式参数不同的构造器同时存在,必须使用“方法重载”。

①区分重载方法

       在用户调用的时候区分它们的唯一方法是它们独一无二的参数列表(java中形式参数出现顺序的不同会被认为是两个方法),除此之外,别无它法。

②涉及基本类型的重载

       实际参数的类型与形式参数的类型不符时会出现两种情况。第一种,实参类型“小于”

形参时,较小的类型会自动提升为较大类型,char类型会被提升为int类型;第二,实参“大于”形参,必须使用强制类型转换-(形参类型)实参类型。

③以返回值区分重载方法是行不通的

       int f();

       void f();

       java无法判断调用的是哪一个f()方法,因此,根据返回值来区分方法是行不通的。

(2)无参数构造器

      又称缺省构造器。它的作用是创建一个“基本对象”。如果类中没用写构造器,则编译器会自动创建一个缺省构造器。但是,如果已经定义一个构造器(无论有无参数),编译器就不会帮你自动创建缺省构造器了。


总结:
主题       功能               修饰  
构造器:   建立一个类的实例      不能用bstract, final, native, static, or synchronized 
方法 :  java功能语句           能用。


主题       返回类型                  this
构造器 :  没有返回值,没有void         指向同一个类中另外一个构造器,在第一行 
方法  :    有返回值,或者void           指向当前类的一个实例,不能用于静态方法 

主题        继承                 编译器自动加入     
构造器 :   构造器不能被继承     是(如果没有)
方法  :    方法可以被继承        不支持

转自http://blog.csdn.net/yaoxy/article/details/4302658

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 朝鲜人向去韩国怎么办? 我是超级大方脸怎么办 被精神病砍断四根筋怎么办 40小时不睡觉怎么办 边防转业军人安置不好怎么办 转业军人孩子读书怎么办玉环 军官证丢了怎么办 飞行学员停飞了怎么办 丹东港债券违约怎么办 对村党支部贿选怎么办 马自达2油耗高怎么办 马自达1.5油耗高怎么办 马自达5停产配件怎么办 期货账户休眠了怎么办 低于二本线怎么办 听力测试不过关怎么办 安装的天正过期怎么办 天正t20v4过期了怎么办 鸡肉菊花一起吃怎么办 孕妇误食马兰头怎么办 孕29周喉咙痛怎么办 哺乳期吃了当归怎么办 哺乳期喝了茶水怎么办 大人感染eb病毒怎么办 下面一直有血怎么办 猫咪吐红色液体怎么办 宝宝拉屎有血水怎么办 屁眼火辣辣的疼怎么办 屁眼拉屎有血怎么办 转业干部退档案怎么办 学校遇到不公待遇怎么办 孕妇受到不公待遇怎么办 强制停机骗局该怎么办 号码被别人举报怎么办 农业银行卡有效期到了怎么办 电信欠费2000多怎么办 被移动强制停机怎么办 手机被强行停机怎么办 免检车有违章怎么办 换房子了宽带怎么办 租房子怎么办宽带合适