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

本帖最后由 xiekai_sjz 于 2017-10-24 15:50 编辑

许多同学在学习面向对象的时候,对类的属性,成员方法和构造方法的概念理解的不太清楚,下面就来讲解下java中类的结构。  类定义的一般格式如下:
    [类定义修饰符] class  <类名>   
          {   //类体
          [成员变量声明]
          [构造函数]
          [成员方法]
         }

一. 类定义修饰符
   修饰符:修饰符可以省略,也可以是public, protected, private, static, final,其中public、protected , private三个最多只能出现其中之一,可以与static, finaf组合起来修饰属性。

二. 成员变量声明
   成员变量是类的属性,声明的一般格式为:
      [变量修饰符] <成员变量类型>   <成员变量名>
   变量修饰符:public、protected、private、和默认(default)

三. 构造函数
   构造函数是一个特殊的函数,java系统会默认自动为每个类生成一个缺省的不带任何参数的构造函数,在创建对象时系统会调用缺省的构造函数。如果程序中定义了构造函数,系统将不再提供该缺省的构造函数。构造函数具有如下特点:
       (1)构造方法的方法名必须与类名相同,其它方法不能和类名相同。
  (2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
  (3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
  (4)构造方法无继承,无多态性。
  (5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
  (6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。

   使用无参数构造函数的例子
class Test {        String name;
        Test(){
                name="aaa";
       }
        public static void main(String[] args){
                Test t1=new Test();
               System.out.println(t1.name);
                t1.name="bbb";
                System.out.println(t1.name);
       }
}
执行程序,输出结果如下:aaabbb  在程序中并没有对对象 t1的name变量进行赋值,而打印输出 t1.name 输出结果是“aaa”,此时Test类的构造函数中对name变量进行了初始化,输出的就是初始化的值;而对t1对象的name属性进行了赋值后,此时输出结果就是重新赋值后的值,即“bbb”。

   使用有参数构造函数的例子
class Test {
        String name;
        Test(){
                name="aaa";
        }
        Test(String myName){
                this.name=myName;
        }
        public static void main(String[] args){
                Test t1=new Test();
                System.out.println(t1.name);
                Test t2=new Test("bbb");
                System.out.println(t2.name);
        }
}
执行程序,输出结果如下:aaabbb

四. 成员方法
   方法定义的类的操作和行为,一般形式为:
      [方法修饰符] <方法返回值类型> <方法名>([<参数列表>])
      {
          方法体
     }
成员方法修饰符主要有public、private、protected、final、static、abstract和synchronized七种,前三种的访问权限、说明形式和含义与成员变量一致。










0 个回复

您需要登录后才可以回帖 登录 | 加入黑马