인프런
자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!!
색션 2. JAVA 객체
메서드
13-1 : 메서드 선언과 호출
메서드도 변수와 같이 선언 및 정의 후 필요시에 호출해서 사용한다.
메서드 선언 및 정의
public void getInfo() { //public은접근자 void는반환형 getInfo는메서드이름 ()은메개변수
//그리고윗줄은메서드선언
//메서드이름은동사+명사무슨뜻인지알수있게
System.out.println(" i = " + i);
System.out.println(" b = " + b);
System.out.println(" d = " + d);
System.out.println(" c = " + c);
System.out.println(" s = " + s);
//위에출력부분은메서드정의
메서드 호출
childClass.childClass = new childClass();
childClass.getInfo();
childClass생성
메인메소드도생성
package pjtTest;
public class MainClass_childClass {
public static void main(String[] args) {
}
}
//main입력후ctrl+space해서메서드찾아서엔터
package pjtTest;
public class childClass {
public String name; //메서드생성
public String gender;
public int age;
public childClass() {
System.out.println(" -- childClass constructor -- ");
}
public void getInfo() {
System.out.println(" -- getInfo() START -- ");
//메소드기본형태만 기능구현X
System.out.println(" name : " + name);
System.out.println(" gender : " + gender);
System.out.println(" age : " + age);
}
}
package pjtTest;
public class MainClass_childClass {
public static void main(String[] args) {
childClass child1 = new childClass();
child1.getInfo();
}
}
-- childClass constructor --
-- getInfo() START --
name : null
gender : null
age : null
어떠한 속성도 지정해 주지 않아서 아직은 이렇게 뜸
불러올 수는 있음을 확인
package pjtTest;
public class MainClass_childClass {
public static void main(String[] args) {
childClass child1 = new childClass();
child1.name = "hong gil dong";
child1.gender = "M";
child1.age = 20;
child1.getInfo();
}
}
-- childClass constructor --
-- getInfo() START --
name : hong gil dong
gender : M
age : 20
13-2 : 매개변수(parameter)
메서드를 호출할 때 데이터를 전달할 수 있다.
public void getInfo() { //매개변수(parameter)는 필요시에만 정의된다.
}
public void setInfo(int i, boolean b, double d, char c, String s) {
} //매개변수(parameter)는 자료형과 변수(지역변수)로 이루어진다.
package pjtTest;
public class childClass {
public String name; //메서드생성
public String gender;
public int age;
public childClass() {
System.out.println(" -- childClass constructor -- ");
}
public void setInfo(String n, String g, int a) {
System.out.println(" -- setInfo() START -- ");
name = n;
gender = g;
age = a;
}
public void getInfo() {
System.out.println(" -- getInfo() START -- ");
//메소드기본형태만 기능구현X
System.out.println(" name : " + name);
System.out.println(" gender : " + gender);
System.out.println(" age : " + age);
}
}
package pjtTest;
public class MainClass_childClass {
public static void main(String[] args) {
childClass child1 = new childClass();
child1.setInfo("hong gil dong", "M", 20);
child1.getInfo();
}
}
-- childClass constructor --
-- setInfo() START --
-- getInfo() START --
name : hong gil dong
gender : M
age : 20
13-3 : 중복 메서드(overloading)
이름은 같고, 매개변수의 개수 또는 타입이 다른 메서드를 만들 수 있다.
package pjtTest;
public class childClass {
public String name; //메서드생성
public String gender;
public int age;
public childClass() {
System.out.println(" -- childClass constructor -- ");
}
/*public void setInfo(String n, String g, int a) {
System.out.println(" -- setInfo() START -- ");
name = n;
gender = g;
age = a;
}
public void getInfo() {
System.out.println(" -- getInfo() START -- ");
//메소드기본형태만 기능구현X
System.out.println(" name : " + name);
System.out.println(" gender : " + gender);
System.out.println(" age : " + age);
*/
public void getInfo() { //중복되어도상관없지만매개변수차이있어야함
System.out.println(" -- getInfo - 1 -- ");
}
public void getInfo(int x, int y) { //위는매개변수없지만얘는있음
System.out.println(" -- getInfo - 2 -- ");
System.out.printf("parameter --> x : %d, y : %d\n", x, y);
}
public void getInfo(String s1, String s2) {
System.out.println(" -- getInfo - 3 -- ");
System.out.printf("parameter --> s1 : %s, s2 : %s\n", s1, s2);
}
}
//}
결과값은.. 콘솔창 오류로 내 이클립스에는 안 뜨지만
childClass constructor
-- getInfo - 1 --
i = 10
b = true
d = 1.23
c = j
s = java
-- getInfo - 2 --
parameter --> x : 10, y : 20
-- getInfo - 3 --
parameter --> s1 : str1, s2 : str2
이런 식으로 뜨는 듯
13-4 : 접근자
메서드를 호출할 때 접근자에 따라서 호출이 불가할 수 있다.
객체 | ||
메서드 호출부 | -> ㄴㄴ | private 메서드 ↓ |
-> | public 메서드 ↑ |
package pjtTest;
public class childClass {
public String name; //메서드생성
public String gender;
public int age;
public childClass() {
System.out.println(" -- childClass constructor -- ");
}
public void setInfo(String n, String g, int a) {
System.out.println(" -- setInfo() START -- ");
name = n;
gender = g;
age = a;
}
public void getInfo() {
System.out.println(" -- getInfo() START -- ");
//메소드기본형태만 기능구현X
System.out.println(" name : " + name);
System.out.println(" gender : " + gender);
System.out.println(" age : " + age);
/*public void getInfo() { //중복되어도상관없지만매개변수차이있어야함
System.out.println(" -- getInfo - 1 -- ");
}
public void getInfo(int x, int y) { //위는매개변수없지만얘는있음
System.out.println(" -- getInfo - 2 -- ");
System.out.printf("parameter --> x : %d, y : %d\n", x, y);
}
public void getInfo(String s1, String s2) {
System.out.println(" -- getInfo - 3 -- ");
System.out.printf("parameter --> s1 : %s, s2 : %s\n", s1, s2);
}*/
}
private void mySecret () {
System.out.println(" -- mySecret() -- ");
}
}
package pjtTest;
public class MainClass_childClass {
public static void main(String[] args) {
childClass child1 = new childClass();
child1.getInfo();
child1.mySecret(); //불가능함
}
}
public은 외부에서 호출할 수 있는 메서드
private는 내부에서만 쓸 수 있음
getInfo에서는 호출할 수 있지만 외부에서는 사용할 수 없는 메서드를 private 접근자라고 함