반응형
객체지향 프로그래밍 OOP 특징
캡슐화 = 보안 = 보호
관련된 데이터(필드)와 기능(메소드)가 하나의 묶음으로 관리
상속
이미 작성된 클래스(부모)를 이어받아서 새롭게 만드는 것
자식 클래스는 부모클래스의 모든 속성(필드)과 동작(메소드) 를 사용할 수 있다.
필요한 기능은 자식 클래스에서 추가해서 사용한다.
추상화
불필요한 것을 제외하고 필요한 것만 유지
실제 객체를 인스턴스화 할때 필요한 내용만 남기고
나머지는 제외하는 것
다형성
객체의 동작이 변경되는 것
파라미터나 상황에 따라 동작이 변경되는 것
자바 파라미터에 클래스 호출 예제
자바8부터 파라미터로 함수를 넣어줄 수가 있다.
David 클래스 내에서 Sujan 클래스 내부 함수 호출
class David{
void ask(Sunja s) {//클래스 내에서 다른 클래스 함수 호출 예제
System.out.println("You, 나 사랑해?");
s.answer();
}
}
class Sunja{
int lovePoint = 60;
void answer() {
if(lovePoint > 50) {
System.out.println("사랑해");
}else {
System.out.println("사랑 안해");
}
lovePoint--;
}
}
public class OOP07 {
public static void main(String[] args) {
David david = new David();
Sunja sunja = new Sunja();
for (int i = 0; i < 15; i++) {
//david.ask();
//sunja.answer();
david.ask(sunja);
}
}
}
AppleBuyer 클래스에서 AppleSeller 클래스 내부 함수 호출
public class AppleBuyer {
//정보
int buyerMoney = 5000; //가진 돈
int countApple = 0; //가진 사과
// 결과 말하기
public void buyerInfo() { //자신의 정보
System.out.println("가지고 있는 사과는 " + countApple + "개 입니다. ");
System.out.println("가지고 있는 돈은 " + buyerMoney + "원 입니다.");
}
// 사는 행동
public void buyApple(AppleSeller as, int money) { //사는 행동 AppleSeller 내부 함수 호출
countApple += as.saleApple(money);
buyerMoney -= money;
}
}
public class AppleSeller {
//정보
int appleCount=50; //사과의 수
int sellerMoney = 0; // 가진 돈
final int APPLE_PRICE = 1000; //상수, 사과의 가격
//기능
public void sellerInfo() { //자신의 정보
System.out.println("남은 사과는 " + appleCount + "개 입니다. ");
System.out.println("수익은 " + sellerMoney + "원 입니다.");
}
//사과를 파는 행동
public int saleApple(int money) {
int count = money/APPLE_PRICE; //줄 사과의 갯수 카운트
appleCount -= count; //사과 총 갯수 카운트
sellerMoney += money; //가진 돈 카운트
return count;
}
}
public class Main {
public static void main(String[] args) {
AppleSeller as = new AppleSeller();
AppleBuyer ab = new AppleBuyer();
ab.buyApple(as, 3000); //AppleSeller에게 3000원어치 사과 구매
ab.buyerInfo(); //AppleBuyer 정보 // 가지고 있는 사과는 3개 입니다.
// 가지고 있는 돈은 2000원 입니다.
as.sellerInfo(); //ApplesSeller 정보 // 남은 사과는 47개 입니다.
// 수익은 3000원 입니다.
}
}
반응형
'프로그래밍 > Java 공부' 카테고리의 다른 글
접근제어자(public, protected, default, private) (0) | 2021.06.03 |
---|---|
인스턴스 멤버, 생성자(Constructor), 정적 멤버(static) (0) | 2021.06.03 |
객체지향, 객체 , 인스턴스 (0) | 2021.06.01 |
데이터 포맷, 텍스트 포맷, 동적가변배열, 배열 복사 (0) | 2021.05.31 |
이차원 배열, 성적 입력 프로그램, 모스부호 해독 (0) | 2021.05.27 |