package oop;
public class People {
//설계도면을 작성하는 공간
//1.필드(속성, 데이터)
//1-1 추상화 작업
//-이름
String name;
//-나이
int age;
//-키
double height;
//-장기
String[] organs;
//2.기능(로직)
//1.밥먹는다.
public void eat() {
System.out.println("밥을 먹는다.");
}
//2.잔다
public void sleep() {
System.out.println(name + "이 잠을 잔다.");
}
//3.공부한다
public void study() {
System.out.println("공부를 한다.");
}
}
package oop;
public class Main {
public static void main(String[] args) {
//객체(object)를 생성하는 공간
//설계도(class)를 기반으로 객체를 메모리에 할당하는 공간 >>클래스의 인스턴스화
People hyung = new People();
//new >> 레퍼런스변수(참조형변수)를 생성할 떄 쓰는 키워드.
//레퍼런스 변수는 주소값을 가지고있다.
System.out.println(hyung);
//접근하는 방법은 점을 통해서 접근한다.
System.out.println(hyung.age);
System.out.println(hyung.name);
//이름은 정형으로
hyung.name = "정형";
//나이는 20살
hyung.age = 20;
hyung.height = 185.9;
hyung.organs =
//필드가 채워지지 않은경우
//기본형 데이터타입의 기본값 = 0
//참조형 데이터타입의 기본값 = Null
}
}
package day6;
public class ex04_OOP {
public static void main(String[] args) {
//객체 지향 프로그램
//Class = object를 제작하기 전 설계하는 도면 레고도면
//object = 설계도면을 기반으로 실제로 만드는것 찍어내는것 레고
//object 1. 필드(속성), 2.메서드(행동)
//1.추상화 - 생각으로 떠올린다(공통점을 찾는다 필드와 메서드의)
// - 상세화된 정보는 무시한다.
// 코드상에서 구현부분만
//2.캡슐화 - 정보의 은닉 데이터와 로직을 묶는다. 사용자가 못꺼내게 은닉한다.
// 메서드를 통해서만 접근할 수 있다.
// 실제 구현한 내용을 외부로부터 감추는 기법
// 타인이 속성이나 메서드를 조작할 수 없도록 숨겨 놓는것.
//3.상속
//물려주다. 부모가 존재 - 자식 존재
//부모한테 물려받는다. 기존코드를 그대로 재사용하거나 재정의 -> 재사용 + 확장
//이미 작성된 클래스의 튻ㅇ을 그대로 이어받아 새로운 클래스를 생성하는 기법
//오버라이딩과 비슷한 개념
//
//4.다형성 (캡상추다)
// 리모컨 - 여러개 기능을 구현
// 같은 기능을 호출했지만 객체에 따라 다르게 동작하는것을 말함
// 상위클래스의 동작을 하위클래스에서 다시 정의하여 사용
}
}