I'm learning Java and practicing by myself.
I tried to make a class variable `String username` and I thought I would get the result
"Hi Nat" since method `engHi()` is in the same class with the variable.

```
class Greetings{
    String userName = "Nat";
    public static void engHi(String userName){
        System.out.println("Hi "+userName);
    }
}
public class Main {
    public static void main(String[] args) {
        Greetings.engHi();
    }
}

```

And I got this message.

```
Error:(11, 18) java: method engHi in class com.company.Greetings cannot be applied to given types;
  required: java.lang.String
  found: no arguments
  reason: actual and formal argument lists differ in length

```

and then I added `this.username = username` in the method `engHi()`

```
class Greetings{
    String userName = "Nat";
    public static void engHi(String userName){
        this.userName = userName;
        System.out.println("Hi "+userName);
    }
}
public class Main {
    public static void main(String[] args) {
        Greetings.engHi();
    }
}

```

And the result is

```
Error:(12, 18) java: method engHi in class com.company.Greetings cannot be applied to given types;
  required: java.lang.String
  found: no arguments
  reason: actual and formal argument lists differ in length

```

I thought since the method is in the same class I thought the method was gonna take the variable username 'automatically' so I didn't put any parameter when I called the method.
So.. It means methods don't take any variable from same class?