zoukankan      html  css  js  c++  java
  • 【java基础】java的构造函数

    java构造器用于创建类的实例,是创建对象的重要途径,因此,java类必须含有一个或一个以上的构造函数

     
    当我们没有为类提供任何构造函数的时候,系统会自动为该类提供一个无参构造函数,当我们为类提供了一个或多个构造函数后,系统就不会自动创建无参构造函数,这时,如果我们要使用无参构造函数,就要自己创建一个。
     
    构造器的一个最大的用处就是在创建对象的时候,给对象的属性显性指定初始值
    示例代码:
    package object;
    
    public class Car {
        
        //如果不创建构造函数的话,系统会自动创建一个如下的无参构造函数
        //此时,对象属性会赋默认值
        public Car (){}
        
        //再创建一个带一个参数的构造函数
        public Car(String carName){
            this.setCarName(carName);
        }
        
        //另一个带一个参数的构造函数
        public Car(String carType,String carName){
            
            this.carType = carType;
            this.carName = carName;
        }
        
        /*上面两个构造器中调用的不一样,一个调用的对外提供的set方法,一个调用的是属性
         *在测试页面中,利用所有的构造函数创建的对象,都能输出传入的值,
         *但是,既然类中的属性被定义为private,那就说明不想被外界直接获取,
         *以免传入不符合实际的值...所以应该还是加个判断,或者调用对外的set方法比较好。
         * */
        
        //定义车的属性
        private String carName;
        private String carType;
        
        //对外提供的get/set方法
        public String getCarName() {
            return carName;
        }
        public void setCarName(String carName) {
            this.carName = carName;
        }
        public String getCarType() {
            return carType;
        }
        public void setCarType(String carType) {
            this.carType = carType;
        }
    }
    package object;
    
    public class TestCar {
        public static void main(String[] args) {
            
            //无参
            Car car1 = new Car();
            //因为在Car中属性的修饰符是private
            //所以只有通过get/set方法对属性取值赋值
            System.out.println(car1.getCarName());
            
            //带一个参数 this.set方法
            Car car2 = new Car("野马");
            System.out.println(car2.getCarName());
            
            //带两个参数 this.属性
            Car car3 = new Car("福特","野马");
            System.out.println(car3.getCarType());
            System.out.println(car3.getCarName());
            
        }
    }    
     

     构造器的重载:

            同一个类中,多个构造器,构造器的形参列表不同,称为构造器重载。可以根据不同的构造器初始化java对象。
     
    可以通过this关键字在构造器中调用相应的构造器
    示例代码:
     1 package object;
     2 
     3 public class Train {
     4     
     5     /*构造函数的重载*/
     6     public Train(){}
     7     
     8     public Train(String type){
     9         this.type = type;
    10     }
    11     
    12     public Train(String type,String color){
    13         //this调用相应的构造函数
    14         this(type);
    15         this.color = color;
    16     }
    17     
    18     public Train(String type,String color,String longth){
    19         //this调用相应的构造函数
    20         this(type, color);
    21         this.longth = longth;
    22     }
    23     
    24     //属性
    25     public String type; //种类
    26     public String color; //颜色
    27      public String longth; //长度
    28      
    29      //测试方法
    30      public void trainInfo(Train t){
    31          StringBuffer sb = new StringBuffer("这是一列");
    32          if(t.longth != null && t.longth.length()>0){
    33              sb.append("由"+t.longth+"辆");
    34          }
    35          if(t.type != null && t.type.length()>0){
    36              sb.append(t.type+"组成的");
    37          }
    38          if(t.color != null && t.color.length()>0){
    39              sb.append("颜色是"+t.color+"的");
    40          }
    41          sb.append("火车");
    42          
    43          System.out.println(sb.toString());
    44      }
    45      
    46      //主函数
    47      public static void main(String[] args) {
    48         
    49          //根据不同的构造函数创建对象
    50          Train t1 = new Train();
    51          
    52          Train t2 = new Train("22B型客车");
    53          
    54          Train t3 = new Train("25T型客车", "蓝白相间");
    55          
    56          Train t4 = new Train("25T型客车", "绿色", "16");
    57          
    58          t1.trainInfo(t1);
    59          //这是一列火车
    60          t2.trainInfo(t2);
    61          //这是一列22B型客车组成的火车
    62          t3.trainInfo(t3);
    63          //这是一列25T型客车组成的颜色是蓝白相间的火车
    64          t4.trainInfo(t4);
    65          //这是一列由16辆25T型客车组成的颜色是绿色的火车
    66     }
    67 }
    Train.java
     
     
     
     
     
     
  • 相关阅读:
    谎言,
    happy,
    架构,
    休闲游戏随想,
    IOS响应者链
    application 几个方法
    ios block 循环引用
    洛谷 P 1133 教主的花园
    Codevs 1148 == 洛谷 P1057 传球游戏
    Codevs 1169 == 洛谷 P1006 传纸条
  • 原文地址:https://www.cnblogs.com/zhengchenhui/p/5763031.html
Copyright © 2011-2022 走看看