클래스와 객체는 붕어빵과 붕어빵을 찍는 기계라고 많이 표현된다.
붕어빵을 찍어내는 기계는 붕어빵이라는 객체들을 생성하기 위한 틀을 제공하기 때문에 클래스라 표현
붕어빵 틀에서 만들어진 붕어빵들은 각각이 객체가 된다고 볼 수 있다.
참고링크 url : 링크
- 특징 4가지 ( 캡 상 추 다 !)
- 캡슐화 (정보은닉) : 은행 입출금으로 배워보기 !
- 상속
- 추상화
- 다형성
관련된 필드(속성)와 메소드(기능)를 하나로 묶고, 실제 구현내용을 외부로부터 감추는 기법.(정보은닉)
만일 상황을 대비해서 특정 속성이나 메소드를 사용자가 조작할 수 없도록 숨겨 놓는것.
외부에서 공개된 메소드(기능)의 인터페이스를 통해 접근한 수 있다.
지금까지 내부로직을 명확하게 모르더라도 공개된 메소드를 공개적으로 사용해왔음...!
간.단.히, 말하면 => 기능을 물려 받는다 !
이미 작성된 클래스(상위클래스)의 특성을 그대로 이어받아 새로운 클래스(하위클래스)를 생성하는 기법
기존코드를 그대로 재사용하거나 재정의-> 재사용 + 확장
차량의 브랜드가 무엇이든 결국은 자동차..!
동일한 버튼에
// 개인 정보를 가진 클래스 Member
// 메세지 보내기 및 이모티콘 메소드 기능가짐
public class Member {
// 나만의 자료형 설계도면
// --> main method를 포함하지 않음.
// --> 자체적으로 실행되지 않음.
// OOP (Object Oriented Programming)
// 1. 필드 Field(DATA, 속성)
String name; // 이름
int age; // 나이
String id; // 아이디
String pw; // 패스워드
// 2. Method(Logic, 행위, 기능)
// 카카오톡에서 메시지 보내기
public void kakaoTalk(String msg) {
System.out.println(name + " 님이 " + msg + " 를 전송합니다.");
}
// 3. 이모티콘 보내기 메소드
public void sendEmo(String emo) {
System.out.println(name + " 님이 " + emo + " 을 보냅니다.");
}
}
// 개인 정보를 가진 클래스 Member를
// 객체로 레퍼런스 선언하여 사용!
// 해당 main으로 개인정보 및 메소드 호출해보기 !
public class Main {
// 실행 할 수 있는 공간이다...!!
public static void main(String[] args) {
// 1. 객체(Object)를 생성(선언)해보기
// --> 클래스 설계도면을 기반으로!
// 회원 자료형 만들기! 변수명 : member1
// 자료형 변수명 = new(레퍼런스) 자료형();
Member member1 = new Member();
// member1 --> 주소값이 저장되어 있는 레퍼런스 변수
// 주소값 출력 => OOP.Member@6121c9d6
System.out.println(member1);
// 2. 객체 안에 있는 필드에 접근하는 방법
// 레퍼런스 변수명.필드
// . --> 점의 의미는 접근의 의미! 가지고 있는!
System.out.println(member1.name);
// field 에 아무런 값도 넣지 않았을때는 기본값이 세팅된다.
// String --> null
// int --> 0
// double --> 0,0
// 3. 객체 안에 있는 필드 데이터를 변경하기
member1.name = "전송민";
System.out.println(member1.name);
// 나이 : 20 / id : smhrd / pw : 12345
// 전부 출력
member1.age = 20;
member1.id = "smhrd";
member1.pw = "12345";
System.out.println(member1.age);
System.out.println(member1.id);
System.out.println(member1.pw);
System.out.println();
// 하나의 클래스 설계도면으로 여러개의 객체 생성가능
// 짝꿍 데이터를 저장하는 member2 객체 생성
// 안에 저장 되어 있는 데이터 모두 출력
Member member2 = new Member();
member2.name = "변현호";
member2.age = 20;
member2.id = "qwer";
member2.pw = "12345";
System.out.println(member2.name);
System.out.println(member2.age);
System.out.println(member2.id);
System.out.println(member2.pw);
// 메소드 실행
member2.kakaoTalk("안녕~!");
}
}