반응형

제목:홍대입구

 

상속의 정의와 장점

 

상속이란

기존의클래스를 재사용하여 새로운 클래스를 작성

 

장점

1.적은양의 코드로 새로운 클래스 작성

2.코드를 공통적으로 관라

3.쿠드의 추가 및 변경이 용이

 

재사용성을 높이고 중복을 제거 생산성과 유지보수에 기여

 

class 클래스명 extends 상위클래스명{

//

}

 

조상클래스- 부모클래스,상위클래스,기반클래스

자손클래스-자식클래스,하위클래스,파생된클래스

 

class parent{ 추가변수 및 수식 a}

 

class child extends parent{ a상속 적용}

 

반대로

 

class parent{ a } b는 추가 X

 

class child extends parent{a , 추가변수 및 수식b}

 

유의점

생성자와 초기화 블럭은 상속x 멤버만 상속

 

자손클래스의 멤버 개수는 조상클래스보다 항상 같거나 많다.

 

extends 클래스명 으로 선언해준 것만 상속으로 받는다

 

class x extends a

 

class y extends a

 

둘은 a를 상속했을 뿐 x와y 는 서로 상관없음

 

class a{ 추가사항 }

 

class x extends a 

a를 상속하니 추가사항 적용

 

class z extends x

x가 a를 상속하니 추가사항 적용 

 

class y extends a

a를 상속하니 추가사항 적용

 

상속은 변수 뿐만 아닌 인스턴스 또한 상속된다.

 



클래스간의 관계 (포함관계)

 

class a{

타입 x;

타입 y; //x,y를  B b=new b(); 변경가능

타입 z;

}

 

class B{

타입 x;

타입 y;

}

 

클래스간의 관계 결정

 

상속관계:a는 b이다. A is a B

포함관계:a는 b를 가지고있다. A has a B

 

위에 문장을 넣어서 만들어보면 클래스 관계를 알수 있다.

 

단일상속(single inheritance)

C++에는 여러 클래스로 부터 상속을 받는 다중상속을 허용하지만 자바에서는 단일 상속만 허용

 

class a extends x,y{} 불가 오직x나 y만 상속

 

다중상속의 장점: 복합적인 기능을 가진 클래스를 쉽게 작성할수 있다.

단점: 복잡해지고 상속 클래스 이름이 비슷할 경우 구별 할수 없음

 

자바는 단일상속만을 허용함

 

Object클래스 모든클래스의 상위

 

class a extends Object{}

모든 상속의 조상의 끝판왕 Object클래스

 

toString(), equals(Object o)를 별도로 선언하지 않아도 나오는 이유가 Object클래스에 정의 되있기때문

반응형

'코딩 > Java' 카테고리의 다른 글

제어자(modifier)  (0) 2016.03.16
오버라이딩(overriding)  (0) 2016.03.16
변수의 초기화  (0) 2016.03.14
생성자(constructor)  (0) 2016.03.14
메서드 오버로딩(method overloading)  (0) 2016.03.14


반응형

제목:나들이

변수의 초기화란

변수를 선언하고 처음으로 값을 저장하는것

 

class 클래스명{

타입 변수명;

타입 변수명=숫자면 0 글자면 null;

}

 

메서드 사용시 다시불러올 경우 기존값이 저장되있을 경우 에러가능

 

자료형별:초기값

boolean:false

char:'/u0000'

byte:0

short:0

int:0

long:0L

float:0.0f

double:0.0d or 0.0

참조형변수:null

 

멤버변수(클래스,인스턴스 변수)와 배열의 초기화는 선택적이지만

지역변수는 반드시 사용하기 전에 초기화를 해줘야 한다.

 

멤버변수 초기화 방법

1.명시적 초기화

2.생성자

3.초기화 블럭

-인스턴스 초기화 블럭: 인스턴스 변수를 초기화 하는데 사용

-클래스 초기화 블럭:클래스 변수를 초기화하는데 사용

 

명시적 초기화

타입 명=명시하는 값;

 



초기화블럭

클래스 초기화 블럭 -클래스변수의 복잡한 초기화에 사용

인스턴스 초기화 블럭-인스턴스 변수의 복잡한 초기화에 사용

 

class InitBlock{

static(클래스 초기화 블럭}

 

{인스턴스 초기화 블럭}

}

 

클래스 초기화 블럭은

클래스가 시작하기 전에 {내용}을 내용으로 바꾸고 class의 메인이 실행됨

인스턴스 초기화 블럭은

인스턴스가 시작하기 전에 {내용}으로 초기화하고 인스턴스가 시작될때마다 시작함

 

멤버변수의 초기화 시기와 순서

 

변수의 초기화시점

클래스:클래스가 처음 로딩될 때 단 한번 초기화됨

인스턴스변수:인스턴스가 생성될때 마다 각인스턴스별로 초기화가 이루어짐

 

변수의 초기화 순서

클래스:기본값 →명시적 초기화 →클래스 초기화블럭

인스턴스 변수:기본값 → 명시적 초기화 →인스턴스 초기화 블럭 →생성자

 

 

반응형

'코딩 > Java' 카테고리의 다른 글

오버라이딩(overriding)  (0) 2016.03.16
상속(inheritance)  (0) 2016.03.16
생성자(constructor)  (0) 2016.03.14
메서드 오버로딩(method overloading)  (0) 2016.03.14
객체지향,인스턴스,클래스,변수,메서드  (0) 2016.03.14


반응형

제목:CMRS

생성자란

인스턴스가 생성될 떄 호출되는 '인스턴스 초기화 메서드'

 

인스턴스 초기화작업에 주로 사용

 

생성자 조건

1.생성자의 이름은 클래스의이름과 같아야 한다.

2.생성자는 리턴값이 없다.

 

변수 =new 이름();

1.연산자 new에 의해 메모리(heap)에 인스턴스 생성

2.생자가 클래스()가 호출되어 수행

3.연산자 new의 결과로 생성된 인스턴스 주소가 반환 변수에 저장

 

기본생성자

모든 클래스에는 반드시 하나 이사으이 생성자가 정의 되어 있어야 한다.

그러나 생성자를 정의 하지 않아도 인스턴스를 생성 할수 있었던 이유는 컴파일러가 '기본 생성자'덕분임

 

생성자를 내가 별도로 추가하면 그에 맞는 형식으로 불러와야한다.

 

기본생성자가 컴파일러에 의해 추가되는 경우는 클래스에 정의된 생성자가 없을경우에 한함

 



매개변수가 있는 생성자

 

명(){} 생성자

명(타입 변수명a,타입 변수명a){

인스턴스변수a=변수명a

인스턴스변수b=변수명b

}

 

 

생성자에서 다른 생성자 호출하기-this(),this

같은 클래스에서 멤버들 간에 서로 호출 한것처럼

생성자 간에도 서로 호출이 가능 조건을 만족시킬떄

-생성자의 이름으로 클래스이름 대신 this를 사용

-한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능하다.

 

명(타입 변수명a,타입 변수명b){

this.인스턴스변수a=변수명a

this.인스턴스변수b=변수명b

}

 

this-인스턴스 자신을 가리키는 참조 변수,인스턴스 주소가 저장

모든 인스턴스 메서드에 지역변수로 숨겨진 채로 존재

this(),this(매개변수)-생성자,같은 클래스의 다른 생성자를 호출할때 사용

 

생성자를 이용한 인스턴스의 복사

인스턴스변수가 동일 할때 사용

 

명(같은상태 클래스명 z){

인스턴스변수a=z.인스턴스변수a

인스턴스변수b=z.인스턴스변수b //불러오는 클래스와 상태가 같아야 함 그래야 성립

}

 

복사를 하여서 별도의 인스턴스 이기 때문에 각기 값들은 별도로 사용가능하다는 장점이있음

 

인스턴스를 생성할 때는 다음의 2가지 사항을 결정해야함

1.클래스-어떤 클래스의 인스턴스를 생성?

2.생성자-선택한 클래스의 어떤생성자로 인스턴스를 생성할 것인가?

 

물론 생성자를 몰라도 프로그래밍이 가능하나 생성자를 적절히 활용하면 간결하고 직관적인 코드를 작성가능

반응형

'코딩 > Java' 카테고리의 다른 글

오버라이딩(overriding)  (0) 2016.03.16
상속(inheritance)  (0) 2016.03.16
변수의 초기화  (0) 2016.03.14
메서드 오버로딩(method overloading)  (0) 2016.03.14
객체지향,인스턴스,클래스,변수,메서드  (0) 2016.03.14

+ Recent posts