객체를 만들기 위한 설계도
입니다.붕어빵 틀
, 객체를 붕어빵
이라고 비유합니다.예를들어, 건물이 있습니다.
이 건물을 표현하는 속성
에는 건물명
, 주소
, 층수
등이 있습니다.
그리고 이 건물이 수행하는 행동
에는 엘리베이터 운행
등이 있습니다.
위와 같이 속성
과 행동
을 설계하는 것이 클래스 입니다.
그리고 이 클래스라는 설계도를 통해 여러 건물이라는 객체를 만들어낼 수 있습니다.
다른 비유를 들어본다면
영화 예매 사이트에는 회원이 존재합니다.
회원을 클래스로 만든다고 하면 필요한 속성
과 행동
은 무엇일까요?
속성
: 이름, 전화번호, ID, PW, 마일리지, ....행동
: 영화 예매하기, 이벤트 참가하기, ....이와 같이 클래스를 설계할 수 있고, 이 클래스를 통해 객체를 만들 수 있습니다.
public class <클래스명> {
Data_Type <변수명>;
public <클래스명>(파라미터1, 파라미터2, ....) {
// 생성자 내부 구현
}
public Return_Type <메소드명>(파라미터1, 파라미터2, ...) {
// 생성자 내부 구현
}
}
일을 수행한 결과값을 일을 시킨 곳에 알려주는 역할을 합니다.
public int withdraw() {
return 10000;
}
void
를 입력합니다.
public void sparkle() {
}
메소드를 호출한 쪽에서 실제 기능을 수행할 메소드에게 알려주어야 하는 부가 정보가 있는 경우에 사용합니다.
아래의 코드에서 int money
를 파라미터라고 합니다.
public void deposit(int money) {
balance += money;
}
public void calculateSum(double num1, double num2) {
result = num1 + num2;
}
public class Account {
// 필드 작성
String accountHolder; // 예금주
String accountNumber; // 계좌번호
int balance; // 잔액
// 생성자
// 메소드
public void deposit(int money) { //입금
System.out.println(money + "원을 입금합니다.");
balance += money;
}
public void withraaw(int money) { //출금
System.out.println(money + "원을 출금합니다.");
balance -= money;
}
public void showBalance() { //잔액조회
System.out.println("잔액 : " + balance + "원");
return balance;
}
}
객체
란 현실 세계에 실제로 존재하는 것을 의미합니다.new
를 사용하여 객체를 생성할 수 있습니다.<클래스명> <변수명> = new <클래스명>();
Student student = new Student();
Book book = new Book();
<변수명>.<필드명>;
student.name = "홍길동";
<변수명>.<메소드명>(파라미터1, ...);
student.calculateAverage();
book.searchBooks("Java");
앞서 생성한 계좌 클래스
를 이용해 객체를 생성하고 메소드를 호출해보겠습니다.
public class AccountTest {
public static void main(String[]args){
// 계좌 클래스를 이용해 account라는 Account 클래스 타입 객체 생성
Account account = new Account();
//속성 정의
account.accountHolder = "홍길동";
account.accountNumber = "123-456789";
account.balance = 10000;
//메소드 호출
System.out.println("계좌" + account.accountNumber + " ( 예금주 : "
+ account.account.showBalance();
}
}
결과값은 아래와 같습니다.
계좌 123-456789 (예금주 : 홍길동)
잔액 : 10000원
20000원을 입금합니다.
잔액 : 30000원
45000원을 출금합니다.
잔액 : -1500원
만약 클래스 내에서 메소드를 아래와 같이 정의했다면,
public String formatTime(int hour, int minute) {}
아래와 같이 변수를 선언하며 호출할 수도 있습니다.
String timeInfo = colock.formatTime(5, 2);
한 클래스 내에 비슷한 기능의 메소드를 같은 이름으로 여러 개 정의하는 것을 의미합니다.
이름
이 같아야 합니다.파라미터
의 개수
, 데이터 타입
, 순서
가 달라야 합니다.public class Overloading {
public void addition( int num1, int num2 ) {
System.out.println( num1 + num2);
}
public void addition ( double num1, double num2) {
System.out.println( num1 + num2);
}
public void addition ( String str1, String str2) {
Systme.out.println( str1 + str2);
}
}
public class OverloadingTest
public static void main ( String[] args) {
Overloading overloading = new Overloading();
overloading.addition( 1000, 365);
overloading.addition( 4.3, 1.8);
overloading.addition( "ANT", "AND");
}
}
생성자는 클래스를 이용하여 객체를 만들어주는 작업자입니다.
클래스라는 설계도에 따라 여러 객체를 만들 때 생성자를 통하게 됩니다.
모든 클래스는 객체를 생성할 수 있도록 최소한 하나의 생성자를 갖습니다.
클래스에 생성자가 하나도 없다면, 자동으로 기본 생성자가 추가됩니다.
기본 생성자란, 매개 변수가 없고 내용이 없는 생성자입니다.
만약 생성자가 하나라도 생성되어 있다면 기본 생성자를 생성하는 방식으로는
객체를 생성할 수 없습니다.
public <클래스명> ( 파라미터 변수, ...) {
// 필드 초기화
}
public Student() {...}
public Student(String name) {...}
public Student(String name, String id) {...}
//기본 생성자로 객체 생성
Student student = new Student();
//생성자를 생성한 후 생성자를 통해 객체 생성
public Book(String title, int price) {
tihs.title = title;
this.price = price;
}
Book book = new Book("해리포터", 8000);
this
자신의 클래스에 있는 필드나 멤버 메소드에 접근하고 싶을 때 사용하는 키워드 입니다.
생성자를 오버로딩
합니다.자동으로 초기값
을 가지게 됩니다.public class Book {
String title;
String author;
int price;
public Book( String author ) {
this.author = author;
}
public Book ( String title, String author) {
this.title = title;
this.author = author;
}
public Book ( String title, String author, int price ) {
this.title = title;
this.author = author;
this.price = price;
}
}
오버로딩된 생성자를 this
를 통해 참조하도록 할 수 있습니다.
이때, 주의할 것은 this
를 생성자의 첫 번째 라인에 둬야 한다는 것입니다.
public class Book {
String title;
String author;
int price;
public Book( String author ) {
this.author = author;
}
public Book( String title, String author ) {
this(author);
this.author = author;
}
public Book( String title, String author, int price ) {
this(author, title);
this.price = price;
}
}