티스토리 뷰
class Friend{
int num1;
int num2; // 인스턴스 변수
//가만히 보니 두 데이터를 자주 덧셈하더라
//자주 밸셈도 하더라 그렇다면 그 기능을여기에 미리 만들어 놓자
//그 기능을 "기능 : 메서드 " 을 여기에 미리 만들어 놓자
void 더하기(){
}
void 빼기(){
}
}
철수.num1 = 100;
철수.num2=50;
철수.더하기()
철수.빼기()
영희.num1=200;
영희.num2=300;
영희.빼기(); // -100출력
#실습1.
package methodex;
class Friend{
int money1;
int money2;
void add(){
System.out.println(money1+money2);
}
void sub(){
System.out.println(money1-money2);
}
}
public class MethodTest {
public static void main(String[] args) {
Friend min=new Friend();
min.money1=30000;
min.money2=20000;
Friend mon=new Friend();
mon.money1=20000;
mon.money2=30000;
min.add();
min.sub();
mon.add();
mon.sub();
}
}
√ 메서드를 만드는 위치 : class 안
밖에서는 만들 수 없음
메서드에서 메서드를 호출한다
1. 인스턴스를 만들어서 호출
2. 그대로 이름만 불러서 호출
√ 메서드 안에다 메서드를 만들 수 없다
ex) int int a; num;
package methodex;
class MethodA{
//정의부 =define ( 만드는 것 )
void myMethod(){
//호출부
myName();
}
void myName(){
System.out.println("내이름은 철수야");
}
void yourMethod(){
}
}
public class MethodTest2 {
public static void main(String[] args) {
MethodA ai =new MethodA();
ai.myMethod();
//22-->5-->7-->9-->10-->11 (myName end)-->return 7-->8(myMethod end)-->22( 밑의 그림 참조 )
}
}
<호출에 대한 흐름>
√ 메서드 만들기
1) print 라는 메서드 만들기
void print적절한 이름을 붙여주자(){
}
∨ void : <-- int, String, int[] ,Some 등... 여러가지 형태로 바뀌게 된다
메서드의 "리턴타입"
∨ 이름 : 메서드 "이름"(상징), return 키워드+벨류
return value 가 등장하면 , 이름은 "변수"로 바뀐다
(함수가 아니라 변수가됨 )==> 찾아가야할 상징
==>동시에 리턴 타입도 그에 걸맞게 변경하면 된다
return value 가 없을 경우 그냥 void 사용
( return value 가 없으면 함수 )
∨ () : 수신부, 외부에서 호출할때 데이터를 넣어주면 변수를 만들고 그 데이터를 저장함 (받자)
그러자면 그데이터에 걸맞는 변수를 선언해야 한다.
여러개의 변수를 선언해 놓을 수 있다
파라미터 "parameter"
∨ {} : 메서드의 "body몸체", 메서드 안에서 실제 수행할 임무를 작성한다.
특히 }를 만나면 메서드가 종료되면서 그안에 있던 메서드에서 사용했던 흔적을 메모리에서 소멸시키고 return 하게 된다
※ 오버로딩
class MethodB{
-->메서드의 이름이 같으면서 파라미터를 다르게 하면 여러개의 메서드를
중복해서 만들 수 있다
=> 이런 기능을 "오버로딩"이라고 한다.
void print(char d, char c){
}
void print(char c){
}
void print(){
}
void print(int count){
}
void print(double d) {
}
#실습
package methodex;
class MethodB{
void print(int count){
//count는 print 메서드 안에서만 사용가능한 지역변수
for(int i=0; i<count;i++){
System.out.println(i+1+"출력");
} //for end
} // void end
} // class end
public class MethodTest3 {
public static void main(String[] args) {
MethodB obj = new MethodB();
obj.print(5); //<-- 5번
System.out.println("====================");
obj.print(10); //<---10번
System.out.println("====================");
obj.print(20); //<---20번
}
}
#return 사용 실습
package methodex;
class MethodB{
void print(int count){
int i=0;
while(true){
System.out.println(i+1+"출력");
i++;
if(i==count){
return;
}
}
}
}
public class MethodTest3 {
public static void main(String[] args) {
MethodB obj = new MethodB();
obj.print(5); //<-- 5번
System.out.println("====================");
obj.print(10); //<---10번
System.out.println("====================");
obj.print(20); //<---20번
}
--> 아규먼트를 보낸다. (파라미터가 받는다)
--> 서로 약속이 맞아야한다.
ex) 아규먼트는 1.1 이고 파라미터는 int num이면
√ 메서드에서 return 해 주는 값을 받아보자!
메서드 만들기(define=정의)
#1. 언제든 종료할 수 있다.
void m(){
if()
return;
}
#2. 종료할 때 데이터를 다시 보낼 수 있다.(리턴 밸류)
void m(){
return 값; ※ 이때는 메서드이름 m 이 변수로 바껴야한다.
변수로 바꾸자면 void를 리턴밸류에 맞게
적용해 줘야한다.
}
------활용
int m(){
return 10; -->void m = 10 대입시켜 놓겠다
int m = 10
}
String m(){
return "안녕"; //"안녕"String 임으로 ( void--> String )바꿔줌
}
int m(){
return 5/2; // 정수 임으로 ( void-->int )
}
int m(){
return 'A'+1;
}
double m(){
return 5/2.0 + (int)5.6 // 실수 임으로 (void-->double)
}
#실습. 계산기 만들기 (완성)
package methodex;
import javax.swing.JOptionPane;
class MethodC{
int num1;
int num2;
int add(){
return num1+num2;
}
int sub(){
return num1-num2;
}
int mul(){
return num1*num2;
}
double div(){
if(num2==0){
return num2;
}else{
return num1/(double)num2;
}
}
}
public class MethodTest4 {
public static void main(String[] args) {
MethodC calc=new MethodC();
calc.num1=Integer.parseInt(JOptionPane.showInputDialog("첫번째 정수를 입력하세요"));
calc.num2=Integer.parseInt(JOptionPane.showInputDialog("두번째 정수를 입력하세요"));
int result=0;
result=calc.add();
System.out.println("덧셈 : "+result);
result=calc.sub();
System.out.println("뺄셈 : "+result);
result=calc.mul();
System.out.println("곱셈 : "+result);
double res2=0;
res2=calc.div();
if(calc.num2==0){
System.out.println("나눌 수 없습니다.");
}else{
System.out.printf("나눗셈 : %.1f", calc.div());
}
}
}
'Programing > Java' 카테고리의 다른 글
Java1 - 17. Contructor (0) | 2017.05.01 |
---|---|
Java1 - 16. private (0) | 2017.04.28 |
Java1 - 14. class (0) | 2017.04.26 |
Java 이용 - ATM기 작성 (0) | 2017.04.26 |
Java1 - 12. while문 (0) | 2017.04.26 |