109 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Methods
 | |
| ---
 | |
| # Methods
 | |
| The most recognizable method in Java is probably `public static void main(String[]args)` where `public` means that users have access to the method, `static` means that the method is based on a "class" rather than an "instance," `void` means that nothing will be returned from the method to another (higher level) method, and `main` which is the name of this particular method.
 | |
| 
 | |
| `getName()` and `getManufacturerName()` are two "Getter" methods we have used here. Generally, methods in Java consist of these parts - 
 | |
| 
 | |
| * Access Modifer (Optional) - `public`, `private`, or `protected`. Defaults to package private if omitted
 | |
| * Return Type - This is required, it denotes what value the method returns, or `void` if nothing is returned
 | |
| * Method Name - follows camelCase convention
 | |
| * Parameter List - List of parameters with their name and type, empty if no parameters are accepted
 | |
| * Method body surrounded by `{ }`
 | |
| 
 | |
| Methods can also optionally have the `static` keyword, meaning it is associated with the class itself, rather than an instance of the class, ex - `public static void main()`.
 | |
| 
 | |
| Notice, unlike JavaScript, we **have** to define the return type of any method we write, otherwise it will fail at compile time. If you do not want a method to return anything, use `void` return type.
 | |
| 
 | |
| Each method has a signature, which is the combination of the data type, the name, and the number of arguments the method takes. In `public static void main` the method does not have a specified data type and instead uses `void` to declare that no data is returned. In a method named `public static double ave(double val, double val)` the data type is "double" (0.0), the name is "ave" (average) and the method takes 2 arguments. Each method **must** have a unique signature.
 | |
| 
 | |
| ```java
 | |
| public class Car {
 | |
|     private String name;
 | |
|     private String manufacturersName;
 | |
| 
 | |
|     public void changeName() {
 | |
|         name = "Tesla";
 | |
|     }
 | |
|     
 | |
|     public String getName(){
 | |
|         return name;
 | |
|     }
 | |
|     
 | |
|     public String getManufacurername(){
 | |
|         return manufacturersName;
 | |
|     }
 | |
|     
 | |
| }
 | |
| ```
 | |
| Parameters can be passed into methods. Parameters are declared just after the name of the method, inside brackets.
 | |
| Syntax for parameter declaration is [Data Type] [Name].
 | |
| ```java
 | |
| public class Car {
 | |
|     private String name;
 | |
| 
 | |
|     public void changeName(String newName) {
 | |
|         name = newName;
 | |
|     }
 | |
| }
 | |
| ```
 | |
| If we not sure with the distinct number of parameters passed in a method then use 'Variable Arguments (Varargs) Method'
 | |
| 
 | |
| Initialize parameter with three dots and will have same dataType.
 | |
| Passed arguments will store in an array and also accessible as array 
 | |
| ```java
 | |
| public class Main
 | |
| {
 | |
| 	public static void main(String[] args) {
 | |
| 	   
 | |
|        Main p=new Main();
 | |
| 		
 | |
|         System.out.println(p.sum(5,5,5,5,5,5,5,5,5)); //can pass any number of argument.
 | |
| 	}
 | |
| 	
 | |
| int sum(int ...a) //decleration of variable argument method.
 | |
| 	{int sum=0;
 | |
| 	    for(int i=0;i<a.length;i++)
 | |
| 	    sum=sum+a[i]; //getting the passed arguments in form of array
 | |
| 	    return sum;}
 | |
| 	
 | |
| }
 | |
| ```
 | |
| 
 | |
| As with any other language, methods (or functions, if you are here from JS world) are used often for their modularity and reusability.
 | |
| 
 | |
| Methods often serve many purposes such as updating information in an object or providing data back to the caller. Here are some examples.
 | |
| 
 | |
| ```java
 | |
| public class Car {
 | |
|     private int numberOfWheels;
 | |
|     
 | |
|     public void setNumberOfWheels(int newNumberOfWheels) {
 | |
|         numberOfWheels = newNumberOfWheels;
 | |
|     }
 | |
|     
 | |
|     public int getNumberOfWheels() {
 | |
|         return numberOfWheels;
 | |
|     }
 | |
| }
 | |
| ```
 | |
| 
 | |
| In the case of `getNumberOfWheels()` the return type is `int` which is a whole number. The keyword `return` tells java to pass back the value of the instance variable `numberOfWheels`. `setNumberOfWheels(int newNumberOfWheels)` however has no return type as it is a setter method as previously seen. In this case though it takes in an argument of type `int` and makes the instance varible `numberOfWheels` equal to `newNumberOfWheels`.
 | |
| 
 | |
| There is also a special method called a constructor that allows for data to be set or operations to be performed when the class is instantiated. This constructor has no return type.
 | |
| 
 | |
| ```java
 | |
| public class Car {
 | |
|     private String model;
 | |
|     private int numberOfWheels;
 | |
|     
 | |
|     public Car(String model, int numberOfWheels) {
 | |
|         this.model = model;
 | |
|         this.numberOfWheels = numberOfWheels;
 | |
|     }
 | |
| }
 | |
| ```
 | |
| 
 | |
| The `Car` class and the `Car(String model, int numberOfWheels)` method have to have the same name in order for java to know that it is the constructor. Now anytime you instantiate a new `Car` instance with the `new` keyword you will need to call this constructor and pass in the needed data.
 |