JAVA—构造方法和对象的创建

 一:构造方法和对象的创建

package chapter4.constructor;

public class TestConstructor {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //1:创建Student类的一个实例(对象)
        Student stu1 = new Student();
        //2:stu1这个对象去调用test1和test2这两个方法
        stu1.test1();
        int sum = stu1.test2(6, 8);//在方法调用中,传入的参数6和8叫做实参
        System.out.println(sum);
        //------------------------
        //构造方法:用来创建对象并进行初始化
        //构造方法:1:要求和类同名;2:不能有返回值,也不能使用void关键字
        //3:对于一个类,系统提供默认的、不带参数的构造方法
        //4:可以自定义一个或者多个构造方法,但是当自定义构造方法时,系统就不再提供默认的不带参数的构造方法
        //5:构造方法要么不定义,如果定义,最好把不带参数的那个构造方法重新定义一次
        //示例
        int a;//声明了一个int类型的变量
        Student stu2;//声明了一个引用类型的变量
        a=5;
        //给这个变量进行初始化
        stu2 = new Student();
        //声明和初始化同时进行
        int b=10;
        Student stu3 = new Student();
        System.out.println("新创建的没有经过初始化的stu3="+stu3);
        System.out.println("stu2="+stu2);
        System.out.println("stu3="+stu3);
        
        //创建对象后,就可以访问对象的属性,也可以调用对象的方法
        int age = stu3.age;//创建对象后,这些对象的属性有个初始值:int 0,double 0.0  引用类型的为null
        
        System.out.println(stu3.stuName);
        System.out.println(stu3.stuId);
        System.out.println(stu3.age);
        System.out.println(stu3.clazz);
        stu3.test1();//利用对象调用方法
        
        
        stu3.stuName="han";
        stu3.stuId="001";
        stu3.age=17;
        stu3.clazz="soft181";
        System.out.println("经过初始化后的stu3="+stu3);
        System.out.println(stu3.stuName);
        System.out.println(stu3.stuId);
        System.out.println(stu3.age);
        System.out.println(stu3.clazz);
        
        //下面演示带4个参数的构造方法
        Student stu4 = new Student("002","zhang",18,"soft181");
        System.out.println(stu4.age);
        stu4.test1();
        System.out.println(stu4);
    }

}

        和基本数据类型不同,在用类声明对象后,还必须创建对象。即为声明的对象分配所拥有的变量(确定对象所具有的属性),类是创建对象的模板,没有类就没有对象。

  一:构造方法:

       构造方法是类中的一种特殊方法,当程序用类创建对象时需要使用它的构造方法。 如果类中没有编写构造方法,系统会默认该类只有一个构造方法,该默认的构造方法是无参数的,且方法体中没有语句。例如:Lader例中就有一个默认的构造方法。

Lader(){

   }

例如Point中有两个构造方法:

class point{
      int x,y;
      point(){
         x=1;
         y=1
      }
      point(int a,int b){
         x=a;
         y=b;
       }
}

例如:构造方法没有类型,有类型的不是构造方法: 

class point{
      int x,y;
   void point(){         //不是构造方法(该方法的类型是void)
         x=1;
         y=1
      }
      point(int a,int b){       //是构造方法
         x=a;
         y=b;
       }
     int point(){           //不是构造方法(该方法的类型是int)
         return 1;
      }


}

 构造方法的规定:

       ①类中的构造方法的名字必须与它所在的类的名字完全相同,而且没有数据类型。

       ②允许在一个类中编写若干个构造方法,但必须保证它们的参数不同(参数不同是指:参数的个数不同,或者参数个数相同,但参数类型不同)

 二:创建对象:

     创建一个对象包括对象的声明和为对象分配变量两个步骤:

①对象的声明:

一般格式为:

类的名字 对象名字;
例如:
XiyoujiRenwu zhubajie;

       声明对象zhubajie时,zhubajiie的内存中没有任何数据,称这时的zhubajie是一个空对象,没有任何“实体”,不能使用;为对象分配变量才可以使用(即为对象分配实体) 

②为声明的对象分配变量:

      使用new运算符和类的构造方法为声明的对象分配变量,即创建对象。如果类中没有构造方法,系统会调用默认的构造方法,该默认的构造方法是无参数的,且方法体中没有语句。例如:

class XiyoujiRenwu{
       float height,weight;
       String head,ear;
       void speak(String s){
         System.out.println(s);
       }
 }
public class aa1
      publiic static void main(String args[]){
          XiyoujiRenwu zhubajie;      //声明对象
         zhubajie=new XiyoujiRenwu();     //为对象分配变量(使用new和默认的构造方法)

 }

     new运算符和构造方法进行运算时要做两件事情,例如:系统见到

new XiyoujiRenwu();

时,就会做下列两件事:

      ❶:为height、weight、head、ear各个变量分配内存,然后执行构造方法语句。如果成员变量在声明时没有指定初值,所使用的构造方法也没有对成员变量进行初始化操作,那么,对于整型的成员变量 ,默认初值为0;浮点型,默认初值为0.0;布尔型,默认初值为false;引用型,默认初值为null。

      ❷:new运算符在为变量height、weight、head、ear分配内存后,将计算出一个称作引用的值(该值包含着代表这些成员变量内存位置及相关重要信息)

所谓创建对象,就是指为对象分配变量,并获得一个引用,以确保这些变量由该对象来操作管理

   三:使用对象:

抽象的目的是产生类,而类的目的是创建具有属性和行为的对象.对象不仅可以操作自己的变量改变状态,而且能调用类中的方法产生一定的行为.通过使用运算符".",对象可以实现对自己变量的访问和方法的调用.

 ①对象操作自己的变量(体现对象的属性):对象创建后就有了自己的变量,即对象的实体.对象通过使用点运算符"."来访问自己的变量,格式为:

对象.变量;

②对象调用类中的方法(体现对象的行为):对象创建后,可以用点运算符"."调用创建它的类中的方法,从而产生一定的行为(功能),调用格式为:

对象.方法;

③体现封装:当对象调用方法时,方法中出现的成员变量就是指分配给该对象的变量.类中的方法可以操作成员变量.当对象调用该方法时,方法中出现的成员变量就是指分配给该对象的变量.

class XiyoujiRenwu {
    float height,weight;
    String head, ear;
    
    
    void speak(String s) {
       head="歪着头";
       System.out.println(s);
    }
}
public class Example4_3 {
    public static void main(String args[]) {
        XiyoujiRenwu  zhubajie,sunwukong;   //声明对象
        zhubajie = new XiyoujiRenwu();      //为对象分配变量
        sunwukong = new XiyoujiRenwu();
        zhubajie.height=1.80f;              //对象给自己的变量赋值
        zhubajie.head="大头"; 
        zhubajie.ear="一双大耳朵"; 
        sunwukong.height=1.62f;            //对象给自己的变量赋值
        sunwukong.weight=1000f;   
        sunwukong.head="绣发飘飘"; 
        System.out.println("zhubajie的身高:"+zhubajie.height);
        System.out.println("zhubajie的头:"+zhubajie.head);
        System.out.println("sunwukong的重量:"+sunwukong.weight);
        System.out.println("sunwukong的头:"+sunwukong.head);
        zhubajie.speak("俺老猪我想娶媳妇");      //对象调用方法
        System.out.println("zhubajie现在的头:"+zhubajie.head);
        sunwukong.speak("老孙我重1000斤,我想骗八戒背我"); //对象调用方法
        System.out.println("sunwukong现在的头:"+sunwukong.head);
        
   }
}


 四:对象的引用和实体:

类是体现封装的一种数据类型,类所声明的变量被称作对象,对象(变量)负责存放引用,以确保对象可以操作分配给该对象的变量以及调用类中的方法。分配给对象的变量被习惯的称作为对象的实体

猜你喜欢

转载自blog.csdn.net/weixin_43372052/article/details/85014338