[JAVA] #OOP특성 #상속 #다형 #은닉 #캡슐화 #캐스팅 #오버라이딩

2021. 4. 20. 19:38·프로그래밍 언어/Java
반응형
class Mother{
	String name;	
	Mother(String name){
		this.name = name;
	}
	void action() {
		System.out.println("cooking");
	}
}

class Son extends Mother{
	Son() {
		super("아들");
		System.out.println("new Son: "+name);
	}
/*	void action() {
		System.out.print("Son action overriding: ");
		System.out.println("Soccer play");
	}
*/	
}
class Daughter extends Mother{
	Daughter() {
		super("딸");
		System.out.println("new Daughter: "+name);
	}
	void action() {
		System.out.print("Daughter action overriding: ");
		System.out.println("Doll play");
	}
	
}
public class AUser1 {
	public static void main(String[] args) {
		Mother mother = new Mother("엄마");
		mother.action();
		System.out.println();
		
		Son son = new Son();
		son.action(); //mother.action method call
		System.out.println();
		
		Daughter daughter = new Daughter();
		daughter.action(); //overriding method call (Daughter.action call)
		System.out.println();
		
		Mother littleMom = daughter; //Implicit Type Casting
		littleMom.action(); //overriding method call (Daughter.action call)
		System.out.println();
		
		//Son sSon = (Son) mother;
		//sSon.action();
		
		Daughter sDaughter = (Daughter) littleMom; //Explicit Type Casting
		sDaughter.action();
		System.out.println(sDaughter.name);
	}
}

OOP(Object Oriented Programming)의 특성
this : 자기자신의 객체 의미 [대명사]
super : 부모의 객체 의미 [대명사]

(1)상속성(Inheritance) ?
부모의 '모든 것'을 자식에게 '상속 받는 것'

-'자식객체'가 생성되며 먼저 '부모객체'가 생성되어야 한다.
-JVM이 기본생성자(default constructor)를 만들어 준다(다른 생성자가 하나도 없을 때만)
-모든 생성자의 첫 라인에는 super();가 생략되어 있다. (단, 다른 super(...)가 있다면 예외)
-부모 메소드의 내용을 자식에서 바꿀 수 있다. (Overriding)
-모든 객체는 Object 자식 (묵시적 상속)
-형변환은 상속관계에서만 가능
          >자동 형변환 by JVM (자식>부모)
                   >>업 캐스팅
          >강제 형변환 by 개발자 (부모>자식)
                  >>다운 캐스팅
:daughter >> mother >> daughter 은 가능하지만, daughter >> mother >> son은 불가능하다.
다운캐스팅은 반드시 전제가 있어야 한다. 업캐스팅 하기전의 타입으로 캐스팅 되는것
-형제관계는 남남과 같다.

(2)다형성(Polimorphism) ?
같은 타입의 객체의 '같은 메소드'가 다른 일을 하는 특성 == 오버라이딩, 형변환

(3)은닉성(Information Hiding) ?
외부 객체로부터 '속성값(데이터)'을 감추는 특성
:다른 클래스의 private String str = "은닉성";은 getter, setter를 통해서 접근이 가능하다.

(4)캡슐화(Encapsulation)
메소드나 생성자의 일의 내용을 알 필요없이, 그 형태(이름/파라미터/리턴타입)만 알면 호출해서 사용할 수 있는 특성

 

 

 

반응형
저작자표시 (새창열림)

'프로그래밍 언어 > Java' 카테고리의 다른 글

[JAVA] Calendar class 사용해서 날짜 가져오기  (0) 2021.05.13
[JAVA] String class 자주사용하는 메서드  (0) 2021.05.13
[JAVA] 랜덤 숫자 중복제거 쉽게 이해하기!  (0) 2021.05.10
[JAVA] 변수정리 #멤버변수? 지역변수? 기본형? 참조형?  (0) 2021.04.22
[JAVA] #클래스구조 #멤버변수 #생성자 #메소드 #오버로딩  (0) 2021.04.14
'프로그래밍 언어/Java' 카테고리의 다른 글
  • [JAVA] String class 자주사용하는 메서드
  • [JAVA] 랜덤 숫자 중복제거 쉽게 이해하기!
  • [JAVA] 변수정리 #멤버변수? 지역변수? 기본형? 참조형?
  • [JAVA] #클래스구조 #멤버변수 #생성자 #메소드 #오버로딩
:j
:j
ddongjunn@gmail.com
  • :j
    dev.j
    :j
  • 전체
    오늘
    어제
    • :j
      • 프로그래밍 언어
        • Java
        • html
        • JavaScript
        • XML
        • JSON
        • CSS
        • jQuery
        • Web
        • k8s
        • JPA
      • 프레임워크
        • Spring
      • 코딩 테스트
        • Java
      • 네트워크
        • CCNA
      • 데이터베이스
        • Mssql
        • Oracle
      • 회고
      • :j story
      • CS
  • 블로그 메뉴

    • 홈
    • 태그
    • github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    HAVING
    id
    appendChild
    Name
    group by
    항해솔직후기
    다형성
    class
    오버로딩
    항해플러스백엔드
    지역변수
    MSSQL
    멤버변수
    항해플러스
    오버라이딩
    Queue
    항해플러스백앤드
    항해백앤드
    <br>
    항해99
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
:j
[JAVA] #OOP특성 #상속 #다형 #은닉 #캡슐화 #캐스팅 #오버라이딩
상단으로

티스토리툴바