class InitTest {
int x;
int y = x; //인스턴스 변수
void method() {
int i;
int j =i;// 컴파일 에러 !! 지역변수를 초기화하지 않고 사용했음.
}
}
class Test
{
int j = i;
inti =10; //에러!!
}
->
class Test
{
int i =10;
int j =i;
}//ok
6.2 멤버변수의 초기하
1.명시적 초기화
class Car{
int door = 4;//기본형 변수의 초기화
Engine ee = new Engine //참조형 변수의 초기화
}
생성자(constructor)
Cart(String color, String gearType, int door) {
this color = color;
this gear Type = gearTypel
this door = door;
초기화 블럭
-인스턴스 초기화 블럭 : {}
-클래스 초기화 블럭 : static {}
멤버변수의 초기화 시기와 순서
-클래스 변수 초기화 시기와 순서
-인스턴스변수 초기화 시점 : 인스턴스가 생성될 때 마다
class InitTest {
static int cv = 1; // 명시적 초기화
int iv = 1; // 명시적 초기화
static { cv =2;} //클래스 초기화 블럭
{ iv = 2; }
InitTest() { //생성자
iv = 3;
}
}
객체 지향 2-1
상속
오버라이딩
package와 import
제어자
다형성
추상클래스
인터페이스
상속
- 기존의 클래스를 재사용해서 새로운 클래스를 작성
- 두 클래스를 조상과 자손으로 관계를 맺어주는 것
-자손은 조상의 모든 멤버를 상속받는다(생성자, 초기화 블럭 제외)
-자손의 멤버개수는 조상보다 적을 수 없다(같거나 많다)
클래스간에 관계 -상속관계
-공통부분은 조상에서 관리 개별부분은 자손에서 관리
-조상의 변경은 자손에 영향을 미치지만, 자손의 변경은 조상에 아무런 영향을 미치지 않는다
class Parent {}
class Child extends Parent {}
class Child2 extends Parent{ }
class GrandChild extends Child {}
포함관계
class Circle {
int x
int y
int r}
-->
class Circle {
point c = new point (); // 원점
int r; //반지름
}
클래스간의 관계결정하기
Circle c1 = new Circle ();
Circle c2 = new Circle(new Point(150,150)50);
point [ ] p = {new point(100,100),
new point(140,50),
new point(200,100)};
Triangle t1 = new Triangle(p);
단일 상속
java는 단일 상속만을 허용한다
Object 클래스 - 모든 클래스의 최고조상
-조상이 없는 클래스는 자동적으로 object클래스를 상속받게 된다
-상속계층도의 최상위에는 object클래스가 위치한다
-모든 클래스는 object클래스에 정의된 11개의 메서드를 상속받는다
2.오버라이딩
"조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것 "
2.2 오버라이딩의 조건
1.선언부가 같아야한다
2.접근제어자를 좁은 범위로 변경할 수 없다
3. 조상 클래스의 메서드 보다 많은 수의 예외를 선언할 수 없다
오버로딩 - 기존에 없는 새로운 메서드를 정의하는 것 (new)
오버라이딩- 상속받은 메서드의 내용을 변경하는 것 (change modify)
제어자
접근제한x>같은 패키지> 같은 패키지 , 다른 패키지으 자손 클래스>접근제한이 전혀 없다
생성자의 접근제어자
-클래스의 접근제어자와 일치
-생성자에 접근제어자를 사용함으로써 인스턴스의 생성을 제한
접근 제어자를 이용한 캡술화
-접근 제어자를 사용하는 이유
외부로부터 데이터를 보호
외부에는 불필요한, 내부적으로만 사용되는 부분을 감춤
다형성
-여러 가지 형태를 가질 수 있는 능력
-하나의 참조변수로 여러 타입의 객체를 참조할 수 있는 것
즉, 조상타입의 참조변수로 자손타입의 객체를 다룰 수 있는 것 ㅋ
다형성이란?
-조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있지만, 반대로 자손타입의 참조변수로 조상타입의 인스턴스를 참조할 수 는 없다
참조변수의 형변환
-조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있지만, 반대로 자손타입의 참조변수로 조상타입의 인스턴스를 참조할 수 는 없다
instanceof 연산자
-참조변수가 참조하는 인스턴스의 길제 타입을 체크
-이항연산자이며 피연산자는 참조형 변수와 타입 연산결과는 true false
-instanceof의 연산결과가 true이면, 해당타입으로 형변환이 가능
참조변수와 인스턴스의 연결
멤버변수가 중복정의된 경우, 참조변수의 타입에 따라 연결되는 멤버변수가 달라진다
메서드가 중복정의된 경우, 참조변수의 타입에 관계없이 항상 실제 인스턴스의 타입에 정의된 메서드가 호출된다
매개변수의 다형성
-참조형 매개변수는 메서드 호출시, 자신과 같은 타입 자손타입의 인스턴스를 넘겨줄 수 있다.
여러 종류의 객체를 하나의 배열로 다루기
-조상타입의 배열에 자손들의 객체를 담을 수 있다.
product p1 = new Tv();
product p2 = new Computer();
product p3 = new Audio();
'취준 note 2023 > 자바의정석' 카테고리의 다른 글
자바의 정석 요약본 한번에 정리하기 - 객체 1-2~6. 변수으 초기화 (0) | 2023.01.10 |
---|---|
자바의 정석 기초편 -요약파일 한꺼번에 정리하기 변수~객체1 (0) | 2023.01.09 |
자바의 정석- 객체지향의 원리2 (2) | 2022.12.27 |
자바의 정석 -상속 (3) | 2022.12.21 |
자바의정석-객체지향 -클래스와 객체, 인스턴스 (1) | 2022.11.20 |