Java :Setter Getter and constructor

前端 未结 11 1348
陌清茗
陌清茗 2020-12-25 12:31

I\'m a bit confused about the use of getter/setters and constructors (see the below code for an example)

    public class ExampleClass {

        private in         


        
11条回答
  •  感情败类
    2020-12-25 13:07

    First, both methods: Constructor and Setter are safe ways to change object's attributes. Are expected from Class author to expose or not safe ways to modify an instance.

    1. The default constructor is always provided if you have not written one:

      // Example of a Class with a Default Constructor 
      public class GetSet {
      
          private String value;
      
          public String getValue() {
              return value;
          }
          public void setValue(String value) {
              this.value = value;
          }
      
      
          public static void main(String[] args) {
              // Theres a implicit Default Constructor here
              // Its ok to do that
              // GetSet obj = new GetSet();
              GetSet obj = new GetSet();
          }
      
      }
      
      
      // Example of a Class without a Default Constructor 
      public class GetSet2 {
      
          public GetSet2(String value) {
              this.value = value;
          }
      
          private String value;
      
          public String getValue() {
              return value;
          }
          public void setValue(String value) {
              this.value = value;
          }
      
          public static void main(String[] args) {
              // GetSet2 obj = new GetSet2(); // compile time error
              // Default constructor is not provided, since u wrote one
          }
      
      }
      


    2. About which is better: Using a constructor or via setter, it depends on what u want. If you will only modify an attribute of a existing object, u may use the setter, or for a completely filled object you may prefer the constructor instead.

        // Example of modifing an obj via Setter and Constructor
        public class GetSet3 {
    
            public GetSet3(String value1, String value2, String value3, String value4) {
                this.value1 = value1;
                this.value2 = value2;
                this.value3 = value3;
                this.value4 = value4;
            }
    
            private String value1;
            private String value2;
            private String value3;
            private String value4;
    
    
            // ... Getters and Setters
    
    
    
            public static void main(String[] args) {
    
                // Its easier to this
                GetSet3 obj;
    
                obj= new GetSet3("j", "a", "v", "a");
    
                // instead that
                // its also easy to forget or do something wrong
                // when u have a lot of attributes to set
                obj.setValue1("j");
                obj.setValue2("a");
                obj.setValue3("v");
                obj.setValue4("a");
    
            }
        }
    

提交回复
热议问题