java-method

ezzange·2022년 8월 31일
0

java

목록 보기
12/16
post-thumbnail

method, retrun, static, 매개변수

생성자는 중복으로 정의할 수 있지만 호출시 구분될 수 있도록 매개변수의 숫자나 데이터타입이 다른 매개변수의 위치가 바뀌어야 사용이 가능하다.

package classes;

public class Classtest {
	int a;
	String b;

	public Classtest(int a) {
		this.a=a;
	}
	public Classtest(String b) {
		this.b=b;	
	}
	public Classtest(int a,String b) {
		this.a=a;
		this.b=b;
	}
	public Classtest(String b,int a) {
		this.a=a;
		this.b=b;
	}
}

형태적으로 4가지 분류 (메서드 정의 방법)

  1. void 메서드이름(x){ }
  2. void 메서드이름(매개변수){ }
  3. 리턴타입 메서드이름(x){ }
  4. 리턴타입 메서드이름(매개변수){ }
modifier returnType nameOfMethod (Parameter){
// method body
}

1. void 메서드이름(x){ }

package day0830;

public class Point {
	//필드
	int x;
	int y;
	//멤버 메서드
	//리턴타입 메서드이름 ( ) { }
	void print() {
		System.out.println("x : " + x);
		System.out.println("y : " + y);
	}
}
package day0830;

public class PointTest01 {
	public static void main(String[] args) {
		//지역변수(메인메서드안에서만 사용가능함)
		//지역변수 --> 어떠한 영역안에 포함되어 있다면.
		//지역변수 --> stack (공유,정적)
		
		//Point p1;-->클래스로 만든 변수는 데이터값을 바로 넣을 수 없다.
		//int a = 10;-->기본 변선 선언시 초기화를 같이 할 수 있다.
		Point p1=new Point();//new를 사용해서 heep 메모리를 할당하여 
		System.out.println("p1->x : "+p1.x);
		System.out.println("p1->y : "+p1.y);
		p1.print();
		System.out.println();
		Point p2=new Point();//지역변수 p2 new 사용해서 heep 할당 point-생성자
		System.out.println("p2->x : "+p2.x);
		System.out.println("p2->y : "+p2.y);
		p2.print();
		
	}//main
}//class
p1->x : 0
p1->y : 0
x : 0
y : 0

p2->x : 0
p2->y : 0
x : 0
y : 0

retrun--> break;처럼 실행하다가 중간에 하위부분을 실행하고싶지 않을떄 사용할 수 있음.
하지만 안써도 상관없다(void 메서드는 메인메서드{ }가 종료되면 사라지기때문)

package day0830;
public class Point {
	int x;
	int y;
	void print() {
		System.out.println("x : " + x);
		System.out.println("y : " + y);
        //return;//메서드종료
	}
}
package day0830;
public class PointTest01 {
	public static void main(String[] args) {

		Point p1=new Point();
		p1.x=10;
		p1.y=20;
		p1.print();
		System.out.println();
		Point p2=new Point();
		p2.print();
		
	}//main
}//class
x : 10
y : 20

x : 0
y : 0

2. void 메서드이름(매개변수){ }

package day0830;

public class Point {
	//필드
	int x;
	int y;
	//멤버 메서드
	//리턴타입 메서드이름 ( ) { }
	void print() {
		System.out.println("x : " + x);
		System.out.println("y : " + y);
	return;//메서드종료
	}
	//setter메서드
	void setX(int x) {
		this.x=x;
	}
	void setY(int y) {
		this.y=y;
	
	}
}
package day0830;

public class PointTest01 {
	public static void main(String[] args) {
		//지역변수(메인메서드안에서만 사용가능함)
		//지역변수 --> 어떠한 영역안에 포함되어 있다면.
		//지역변수 --> stack (공유,정적)
		
		//Point p1;-->클래스로 만든 변수는 데이터값을 바로 넣을 수 없다.
		//int a = 10;-->기본 변선 선언시 초기화를 같이 할 수 있다.
		Point p1=new Point();//new를 사용해서 heep 메모리를 할당하여 
		p1.setX(100);
		p1.y=20;
		p1.setY(200);
		//System.out.println("p1->x : "+p1.x);
		//System.out.println("p1->y : "+p1.y);
		p1.print();//메서드 이름( ) --> 메서드 호출
		System.out.println();
		Point p2=new Point();//지역변수 p2 new 사용해서 heep 할당 point-생성자
		//System.out.println("p2->x : "+p2.x);
		//System.out.println("p2->y : "+p2.y);
		p2.print();
		
	}//main
}//class
x : 100
y : 200

x : 0
y : 0

retrun타입 메서드이름(x){ }

package day0830;

public class Point {
	private
	//필드
	int x;
	int y;
	//멤버 메서드
	//리턴타입 메서드이름 ( ) { }
	void print() {
		System.out.println("x : " + x);
		System.out.println("y : " + y);
	return;//메서드종료
	}
	//setter메서드
	void setX(int x) {
		this.x=x;
	}
	void setY(int y) {
		this.y=y;
	}
	//리턴타입이 존재: return 키워드뒤에 value
	//value가 어떤유형인지에 따라 결정해주면 된다.
	//일반적으로 return value와 returnType을 일치시킨다
	//getter메서드
	public int getX() {
		//System.out.println("getX()가 실행되었습니다.");
			return x;
	}
	public int getY() {
		return y;

	}
	}//class
package day0830;

public class PointTest01 {
	public static void main(String[] args) {
		//지역변수(메인메서드안에서만 사용가능함)
		//지역변수 --> 어떠한 영역안에 포함되어 있다면.
		//지역변수 --> stack (공유,정적)
		
		//Point p1;-->클래스로 만든 변수는 데이터값을 바로 넣을 수 없다.
		//int a = 10;-->기본 변선 선언시 초기화를 같이 할 수 있다.
		Point p1=new Point();//new를 사용해서 heep 메모리를 할당하여 
		System.out.println();
		int x  = p1.getX();
		p1.setX(100);
		//p1.y=20;
		p1.setY (200);
		//System.out.println("p1->x : "+p1.x);
		//System.out.println("p1->y : "+p1.y);
		p1.print();//메서드 이름( ) --> 메서드 호출
		System.out.println();
		Point p2=new Point();//지역변수 p2 new 사용해서 heep 할당 point-생성자
		//System.out.println("p2->x : "+p2.x);
		//System.out.println("p2->y : "+p2.y);
		p2.print();
		
	}//main
}//class
x : 100
y : 200

x : 0
y : 0

retrun타입 메서드이름(매개변수){ }

package day0830;

public class Calculator {
	//클래스안에 쓸 수 있는 것들
	//1.필드
	//2.메서드
	//필드와 클래스는 무조건적으로 있어야하는 것들은 아니지만 
	//클래스안에 필드와 메서드 둘 다 없으면 의미없는 클래스가 된다.
	
	//리턴타입 메서드이름(매개변수){}
	public static int plus(int a, int b) {
		return a+b;
	}
	public static int minus(int a, int b) {
		return a-b;
	}
	//3.생성자(필수-생략가능)
	//4.내부 클래스
	class AAA{
		int a;
		void disp() {}
		public AAA() {
			
		}
	}
}//class
package day0830;

public class CalcTest01 {
	public static void main(String[] args) {
		/*객체를 각각 만들기 
		Calculator Cal=new Calculator();
		int result = Cal.plus(10, 20);
		System.out.println(result);
		
		result = Cal.minus(100, 50);
		System.out.println(result);
		*/
		
		//객체를 만들지 않고 값만 변경 
		int result =Calculator.plus(100,200);
		System.out.println(result);
		
		result =Calculator.minus(5,2);
		System.out.println(result);
	}//main

}//class

300
3

method(1)

package book;

public class Calculator {	
	public Calculator() {//생략된 생성자
		
	}

	//메서드
	void powerOn(){
		System.out.println("전원을 켭니다.");
	}
	int plus(int x, int y){
		//int resulf= x+y;
		return  x+y;
	}	
	double divide(int x, int y){
		return (double)x/y;
	}
	void powerOff(){
		System.out.println("전원을 끕니다.");
	}
}//class
package book;

public class CalculatorTest {
	public static void main(String[] args) {
	
		Calculator calculator=new Calculator();
		
		
		calculator.powerOn();
		//메서드의 호출:메서드의 바디영역이 실행됩니다.
		
		calculator.powerOff();
		
		
		
	}//main
}//class
전원을 켭니다.
전원을 끕니다.

method(2)

package book;

public class Calculator {	
	public Calculator() {//생략된 생성자
		
	}

	//메서드
	void powerOn(){
		System.out.println("전원을 켭니다.");
	}
	int plus(int x, int y){
		//int resulf= x+y;
		return  x+y;
	}	
	double divide(int x, int y){
		return (double)x/y;
	}
	void powerOff(){
		System.out.println("전원을 끕니다.");
	}
}//class
package book;

import java.util.Scanner;

public class CalculatorTest {
	public static void main(String[] args) {
	
		Calculator calculator=new Calculator();
		
		calculator.powerOn();
		//메서드의 호출:메서드의 바디영역이 실행됩니다.
		Scanner in=new Scanner(System.in);
		System.out.println("숫자 2개를 공백을 구분으로 연속적으로 입력하세요.");
		int a=in.nextInt();
		int b=in.nextInt();
		System.out.println("더하기 결과 : "+calculator.plus(a, b));
		calculator.powerOff();
		
		
		
	}//main
}//class
전원을 켭니다.
숫자 2개를 공백을 구분으로 연속적으로 입력하세요.
10 20
더하기 결과 : 30
전원을 끕니다.

method(3)

package book;

import java.util.Scanner;

public class CalculatorTest {
	public static void main(String[] args) {
	
		Calculator calculator=new Calculator();
		
		calculator.powerOn();
		//메서드의 호출:메서드의 바디영역이 실행됩니다.
		Scanner in=new Scanner(System.in);
		System.out.println("숫자 2개를 공백을 구분으로 연속적으로 입력하세요.");
		int a=in.nextInt();
		int b=in.nextInt();
		System.out.println("더하기 결과 : "+calculator.plus(a, b));
		
		System.out.println("분모와 분자를 연속해서 입력하세요.");
		int x=in.nextInt();
		int y=in.nextInt();
		System.out.printf("%d / %d = %.2f\n" ,x ,y, calculator.divide(a, b));
		calculator.powerOff();
		
		
		
	}//main
}//class

method(4)

전원을 켭니다.
숫자 2개를 공백을 구분으로 연속적으로 입력하세요.

10 20
더하기 결과 : 30
분모와 분자를 연속해서 입력하세요.

10 20
10 / 20 = 0.50
전원을 끕니다.
package book;

public class Computer {
	//메소드를 작성할 때 
	/*int sum() {
		return 0; }*/
	//혹은 
	/*void sum() {} */
	//시작한다.
	
	//매개변수로 전달된 배열정보를 모두 더한결과를 리턴
	int sum (int[] arr) {
		int result=0;
		for(int i=0; i<arr.length;i++) {
			//result =result+arr[i];
			result +=arr[i];
		}
		return result;
	}//main
}//class
package book;

public class ComputerTest {
	public static void main(String[] args) {
		
		int[] arr= {1,2,3,4,5};
		
		Computer com =new Computer();
		int result = com.sum(arr);
		System.out.println("배열의 합 : "+result);
		
		
	}

}
배열의 합 : 15

메소드의 오버로딩

간단

package day0830;

public class MyPrinter {
	void print(int data) {
		System.out.println(data);
	}
	void print(long data) {
		System.out.println(data);
	}
	void print(byte data) {
		System.out.println(data);
	}
	void print(short data) {
		System.out.println(data);
	}
	void print(char data) {
		System.out.println(data);
	}
	void print(String data) {
		System.out.println(data);
	}
	void print(Object data) {
		System.out.println(data);
	}
	
}//class
package day0830;

public class MethodTest01 {
	public static void main(String[] args) {
	
		MyPrinter mp=new MyPrinter();
		mp.print(20000000000L);
		mp.print("안녕하세요");
		mp.print(100);
		mp.print('가');
		mp.print(3.14);
		
		
	}//main

}//class
20000000000
안녕하세요
100
가
3.14
package day0830;

public class Calc {
	//두개의 정수, 실수 더하기 기능
	//static이 존재하기 때문에 달느 객체를 만들 필요없다.
	public static int add(int a , int b) {
		return a+b;
	}

	public static double add(double a, double b) {
		return a+b;
	}

}//class
package day0830;

public class CalcTest02 {
	public static void main(String[] args) {
		System.out.println("두 수의 더하기 결과는 "+Calc.add(10, 20));
		System.out.println("두 실수의 더하기 결과는 "+Calc.add(10.5, 20.5));
	}

}
두 수의 더하기 결과는 30
두 실수의 더하기 결과는 31.0

캡슐화-데이터 은닉

메소드 자동완성- getter와 setter

package day0830;

import java.time.LocalDateTime;

public class BoardInsertDTO {
	//필드 접근을 private 클래스내부로 제한하고
	//대신 public getter,setter메서드를 만들었다.
	//oop의 4대개념 중 하나 
	private long no;
	private String title;
	private String content;
	private String weiter;
	private int readCount;
	private LocalDateTime createdDate;
	private LocalDateTime updatedDate;
	private boolean locked;

	//getter메서드 : 필드의 값을 읽어오기위한 목적의 메서드
	public long getNo() {
		return no;
	}
	//setter메서드 : 필드의 값을 세팅(수정)하기위한 목적의 메서드
	public void setNo(long no) {
		this.no = no;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getWeiter() {
		return weiter;
	}
	public void setWeiter(String weiter) {
		this.weiter = weiter;
	}
	public int getReadCount() {
		return readCount;
	}
	public void setReadCount(int readCount) {
		this.readCount = readCount;
	}
	public LocalDateTime getCreatedDate() {
		return createdDate;
	}
	public void setCreatedDate(LocalDateTime createdDate) {
		this.createdDate = createdDate;
	}
	public LocalDateTime getUpdatedDate() {
		return updatedDate;
	}
	public void setUpdatedDate(LocalDateTime updatedDate) {
		this.updatedDate = updatedDate;
	}
	public boolean isLocked() {
		return locked;
	}
	public void setLocked(boolean locked) {
		this.locked = locked;
	}	
	
}//class

0개의 댓글