Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 웹
- 해킹
- 스프링
- 자바 Array list
- 마이크로서비스 아키택트
- 세션쿠키
- lord of sqlinjection`
- 세션
- 자바 is-a
- 쿠키
- 클라이언트
- sqlinjection
- 웹 개발
- 자바
- Los
- 스프링구조
- XSS
- 스프링 종류
- 서버
- php
- 자바 has-a
- 스프링 특징
- Lord of sqlinjection
- 자바 문법
- sql
- 소켓
- 보안
- lord of sqlinjectin
- APM
- injection
Archives
- Today
- Total
LJ
자바 객체 선언과 생성 본문
객체 선언
클래스명 + 객체변수명 ;
객체 생성
객체 변수명 = new 클래스명;
객체 선언과 생성을 동시에
클래스명 + 객체변수명 = new 클래스명;
여기서 업캐스팅한 경우
부모클래스명 + 객체 변수명 = new 자식클래스명;
-> 자식 클래스의 객체 주소를 부모 클래스 타입으로 변환 ->부모 클래스의 맴버만 접근 가능
# 상속관계에서 객체생성 방법
## 상속관계에서 객체 생성 방법
- 객체 생성 : new 연산자와 생성자 메서드 활용하여 객체 생성.
- 상속관계(부모-자식)에서 객체 생성 : 나(하위 클래스)를 기준으로 나라는 존재가 만들어지기 전에, 부모(상위 클래스)가 먼저 만들어져야 한다.
- 간접 이용 : 상위(부모)클래스를 이용하는 방식 (하위 클래스의 동작 방식을 모를 때, class 파일(=실행파일)만 있고 java 파일(=소스파일)은 없을 때 사용). 이때 하위 클래스를 접근할 수 없음, 재정의(오버라이드)를 이용하면 가능 함.
Animal dog = new Dog();
dog.eat();
Animal cat = new Dog();
cat.eat();
cat.night();
- 직접 이용 : 상위(부모)클래스를 이용하지 않는 방식.
Dog dog = new Dog();
dog.eat();
Cat cat = new Cat();
cat.eat();
cat.night();
##상속관계에서 객체 생성 방법 (실습)
- 모든 클래스는 상속을 받지 않으면 기본적으로 루트 클래스인 Object 클래스(최상위 클래스)를 상속받음.
- 다형성 : 상위(부모) 클래스가 하위(자식) 클래스에게 동일한 메시지를 보내면 하위 클래스가 서로 다르게 동작하는 것. (상속 관계에서 업캐스팅 시 적용)
public class Animal extends Object {
public void eat() {
System.out.println("?"); // 포괄적, 추상적.
}
public Animal() {
super(); // new Object();
}
}
public class Dog extends Animal {
// 이름, 나이, 종 등 : 상태정보 존재.
// 재정의(override)
public void eat() {
System.out.println("멍멍이 처럼 먹는다.");
}
public Dog() {
super(); // new Animal();
}
}
public class Cat extends Animal {
// 이름, 나이, 종 등 : 상태정보 존재.
@Override
public void eat() {
System.out.println("고양이 처럼 먹는다.");
}
public void night() {
System.out.println("고양이는 밤에 눈에서 빛이 난다.");
}
public Cat() {
super(); // new Animal();
}
}
public class TPC22 {
public static void main(String[] args) {
// 재정의(오버라이드) 유무에 따라 하위(자식)클래스의 메서드 구동 가능 여부가 결정됨.
// 1. 직접 이용
Dog dog = new Dog();
dog.eat();
Cat cat = new Cat();
cat.eat();
cat.night();
// 2. 간접 이용 : 상속관계가 선행되어야 사용 가능.
Animal d = new Dog(); // UpCasting (자동 형 변환)
d.eat();
Animal c = new Cat();
c.eat();
((Cat)c).night(); // DownCasting (강제 형 변환)
}
}
'IT > 자바' 카테고리의 다른 글
자바 업 캐스팅 다운 캐스팅 (0) | 2022.09.26 |
---|---|
자바 is-a has-a (0) | 2022.09.26 |
자바 Array list (0) | 2022.09.26 |
자바 향상된 for 문 (0) | 2022.09.26 |
자바 static (0) | 2022.09.26 |
Comments