언어/Java

190131 ~객체지향프로그래밍I - ②

닥스훈스 2019. 2. 1. 00:58

*클래스멤버와 인스턴스 멤버

-클래스 메서드(static 메서드)는 객체를 생성하지 않고 'class이름.메서드이름'로 사용가능

같은 클래스내에서는 '메서드이름'만 써서 사용가능

-static메서드에서 인스턴스변수,인스턴스 메서드 사용x => 인스턴스멤버가 존재하는 시점에 클래스멤버는 항상 존재하지만, 클래스멤버가 존재하는 시점에 인스턴스멤버가 존재하지 않을 수도 있기 때문에

-인스턴스변수,인스턴스 메서드에서 static메서드 사용O

 

*오버로딩

-오버로딩(=메서드 오버로딩): 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것

-만족: 1)메서드 이름이 같아야 한다. 2)매개변수개수 또는 타입이 달라야한다. 

* 가변인자: ex)String concatenate(String... str){...}

System.out.println(concatenate()); //인자가 없음

System.out.println(concatenate("a"); //인자가 하나

System.out.println(concatenate("a","b"); //인자가 둘

System.oout.println(Concatenate(new String[]{"A","B"})) //배열도 가능

-가변인자가 선언된 메서드를 호출할 때 마다 배열이 새로 생성된다.->비효율

-매개변수 타입을 배열로 하는것과 차이점->인자를 생략할수 없으며 null이나 길이가 0인 배열을 인자로 지정해주어야 한다.
가변인자로 Concatenate({"100","200","300"})이 나올수는 x

-가변인자를 선언한 메서드를 오버로딩하면 구별되지 못하는 경우 발생하기 쉬우므로 주의할 것

 

 

*생성자

-생성자: 인스턴스 초기화 메서드로 인스턴스 변수의 초기화 작업에 사용 

-만족: 1)생성자의 이름은 클래스의 이름과 같아야 한다. 2)생성자는 리턴값이 없다.(void사용x)

모든 클래스에는 반드시 하나 이상의 생성자가 정의되어 있다.

컴파일러가 제공하는 '기본생성자' -> 클래스내에 생성자가 하나도 없을때만 자동으로 추가됨

 

*자바 명명규칙 https://crosstheline.tistory.com/67