728x90
반응형
매서드
1 해당 클래스가 제공하는 기능을 정의한 코드 블록
2 보통 메서드 하나는 하나의 기능을 수행하도록 함
3 이름은 변수 이름 규칙을 따르며,마음대로 정할 수 있음.
4 매개변,리턴을 가질 수 있음,
a 매개변수(parameter) = 입력 값
i 해당 메서드를 호출할 때 넘겨줄 데이터
ii 일종의 입력 데이터
iii. 갯수에 제한은 없음
b 리턴 (return) = 출력 값
i. 해당 메서드가 끝났을 때 호출한 곳으로 넘겨줄 데이터
ii. 일종의 출력 데이터
iii. 어떤 타입이든 하나만 리턴을 할수 있음
2 객체 선언 문법
[객체로 선언할 클래스 이름] [객체로 지정할 이름(마음대로)] = new [객체로 선언할 클래스의 생성자];
기초 문법
1 매개변수 x 리턴 x
Public void method(){
//메서드가 호출됐을 때 실행할 문장
}
2 매개변수 o 리턴 x
public void method1([매개변수]){
// 메서드가 호출 됐을때 실행할 문장(매개변수가 활용돼야함)
}
리턴이 없을 떄는 void를 사용 한다
3 매개변수 x 리턴 o
public[리턴타입] method3(){
//메서드가 호출 됐을때 실행할 문장
return[리턴값 또는 리턴 문장];
}
리턴타입과 리턴 값은 반드시 일치 하여야 하고 리턴이 있는 메서드를 호출 할 때는 호출하는 문장에서 반드시 호출 결과를 활용하는 내용이 있어야 한다
매개 변수가 없을경우 void 대신 다른 타입을 넣어준다
4 매개변수o 리턴o
public[리턴타입] method4([매개변수]){
//메서드가 호출 됐을때 실행할 문장(매개변수가 활용돼야함)
return[리턴값 또는 리턴 문장];
}
<예제1>
계산기
package ch10_class.ex7;
import java.util.Arrays;
import java.util.Scanner;
public class CalculatorMain {
public static void main(String[] args) {
/**
* 실행하면 반복문으로 메뉴를 출력
* 1.덧셈 2.뺄셈 3.곱셈 4.나눗셈
* 각 번호를 선택하면 Calculator 클래스에 있는 해당 메서드를 호출하여 결과를 출력함
*/
Calculator calculator = new Calculator();
Scanner scanner = new Scanner(System.in);
boolean run = true;
while (run){
System.out.println("1.덧셈 2.뺄셈 3.곱셈 4.나눗셈");
int button = scanner.nextInt();
if (button == 1){
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
calculator.sum(num1 , num2);
}else if (button == 2){
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
calculator.sub(num1,num2);
}else if (button == 3){
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int mul = calculator.mul(num1 , num2);
System.out.println(mul);
}else if (button == 4){
System.out.println(calculator.div());
}
}
}
}
위와 같이 while 문 으로 실행 하여 주고
스케너로 수를 입력받으며 실행을 시키는 코드
<메서드>
package ch10_class.ex7;
import java.util.Scanner;
public class Calculator {
/**
* 덧셈 메서드
* method name: sum
* parameter: int 타입 2개
* return: x
* 실행내용
* - 매개변수로 전달 받은 2개 값의 합을 출력
*/
public void sum(int num1 , int num2){
int sum = num1 + num2;
System.out.println(sum);
}
/**
* 뺄셈 메서드
* method name: sub
* parameter: int 타입 2개
* return: x
* 실행내용
* - 매개변수로 전달 받은 2개 값의 차를 출력
*/
public void sub(int num1 , int num2){
int sub = num1 - num2;
System.out.println(sub);
}
/**
* 곱셈 메서드
* method name: mul
* parameter: int 타입 2개
* return: int 타입
* 실행내용
* - 매개변수로 전달 받은 2개 값의 곱 결과를 리턴
*/
public int mul(int num1 , int num2){
int result1 = num1;
int result2 = num2;
return result1* result2;
}
/**
* 나눗셈 메서드
* method name: div
* parameter: 없음
* return: int 타입
* 실행내용
* - 스캐너로 나눗셈에 필요한 정수 2개를 입력받음
* - 나눗셈 결과를 리턴
*/
public int div(){
Scanner scanner = new Scanner(System.in);
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int result = num1 / num2;
return result;
}
}
getter/setter 메서드
- 클래스가 가지고 있는 필드는 외부에서 직접 접근을 못하게 해야함.
- 필드에는 private 이라는 접근 제한자를 붙임.
예)
- getter/setter. 라는 메서드를 이용하여 필드값을 간접적으로 저장하고 사용하도록 함
- 각각의 필드는 각각의 getter/setter 메서드를 하나씩 가짐
A . setter 메서드
- 필드에 값을 저장하기 위한 메서드
- 필드 이름이 name 이라면 setName() 이라는 이름으로 만듦
- 실행 내용은 저장할 값을 매개변수로 전달 받고 전달받은 값을 필드에 저장
B . getter 메서드
- 필드값을 전달하기 위한 메서드
- 필드 이름이 name 이라면 getName()이라는 이름으로 만듦
- 해당 필드와 동일한 타입의 리턴 타입으로 정의하고 매개변수는 없음.
public class Ex{
private String name;
public void setName(String name){
this.name = name
}
public String getName(){
return name;
}
}
getter/setter 예문
package ch10_class.ex8;
public class BookMain {
public static void main(String[] args) {
Book book = new Book();
// book.bookTitle = "책제목1";
book.setBookTitle("책제목1");
String Title = book.getBookTitle();
System.out.println("Title = " + Title);
book.setBookAuthor("저자1");
System.out.println(book.getBookAuthor());
}
}
<메서드>
package ch10_class.ex8;
public class Book {
private String bookTitle;
private String bookAuthor;
// bookTitle setter
public void setBookTitle(String bookTitle){
this.bookTitle = bookTitle;
}
// bookTitle getter
public String getBookTitle(){
return bookTitle;
}
// bookAuthor setter
public void setBookAuthor(String bookAuthor){
this.bookAuthor = bookAuthor;
}
// bookAuthor getter
public String getBookAuthor(){
return bookAuthor;
}
}
<예제 2 >
getter / setter 활용
package ch10_class.ex9;
import java.util.Arrays;
public class StudentMain {
public static void main(String[] args) {
// 기본생성자로 Student 클래스 객체 만들고 setter 를 이용하여 필드값 채우기
Student student = new Student();
student.setStudentName("김00");
student.setStudentNumber("0000000000");
student.setStudentMajor("컴퓨터 공학");
student.setStudentMobile("010-0000-0000");
// 모든 필드를 매개변수로 하는 생성자로 Student 클래스 객체 만들기
Student student1 = new Student("김00", "0000000" , " 컴퓨터 공학", "010-0000-0000");
// 각각 객체에서 print 메서드 호출하여 필드값 출력
String result = student.print();
System.out.println(result);
}
}
<메서드>
package ch10_class.ex9;
public class Student {
/*
필드
이름(studentName)
학번(studentNumber)
학과(studentMajor)
전화번호(studentMobile)
*/
private String studentName;
private String studentNumber;
private String studentMajor;
private String studentMobile;
//각 필드의 getter/setter 메서드
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public String getStudentName() {
return studentName;
}
public void setStudentNumber(String studentNumber) {
this.studentNumber = studentNumber;
}
public String getStudentNumber() {
return studentNumber;
}
public void setStudentMajor(String studentMajor) {
this.studentMajor = studentMajor;
}
public String getStudentMajor() {
return studentMajor;
}
public void setStudentMobile(String studentMobile) {
this.studentMobile = studentMobile;
}
public String getStudentMobile() {
return studentMobile;
}
//기본 생성자
public Student() {
}
// 모든 필드를 매개변수로 하는 생성자
public Student(String studentName, String studentNumber, String studentMajor, String studentMobile) {
this.studentName = studentName;
this.studentNumber = studentNumber;
this.studentMajor = studentMajor;
this.studentMobile = studentMobile;
}
// 필드에 저장된 값을 출력하는 print 메서드
public String print(){
String result = "이름: " + studentName +" " +"학번: "+ studentNumber +" "+"학과: "+ studentMajor +" "+"전화번호: "+ studentMobile;
return result;
}
}
객체 지향의 기본적인 원리는 입력값과 리턴값을 주고 받는것이기에 입력값 => 실행문 => 출력값 => 출력문이다
기본적인 원리와 순서를 이해하는것이 중요하다
728x90
반응형
'개발일지' 카테고리의 다른 글
개발일지 15일차 -ArrayList- (1) | 2023.12.15 |
---|---|
개발일지 14일차 -Override,Overloding- (0) | 2023.12.14 |
개발일지 12일차 -객체 지향 프로그래밍- (1) | 2023.12.11 |
개발 일지 11일차 -배열 응용- (0) | 2023.12.09 |
개발 일지 10일차 -타입 , 배열 - (0) | 2023.12.07 |