JAVA, JSP

생성자 메서드 오버로딩, static, 메서드 오버라이딩, 추상 클래스, 추상 메서드, interface

suji0730 2024. 7. 8. 17:04

 

1) 생성자 메서드 오버로딩

 

1. default 생성자 메서드 : 클래스 이름과 동일한 메서드 
2. 생성자 메서드 역할 : 클래스 통해서 새로운 객체를 생성한다. 새로운 주소가 생성되고 주소내에 data영역과 method영역이 있다.

3. 오버로딩  : 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.

3. default 생성자 메서드 선언
public BB01() {
// 처리 과정을 추가 할 수 있다
}
BB01 b = new BB01();
* default 생성자 메서드만 필요 할때는 default 생성자 메서드 선언 필요없음.( 컴파일시 자동 생성)

 

 

private String mid;
private String mpw;
private String mlevel;


public BB01(String mid, String mpw, String mlevel) {
this.mid = mid;
this.mpw = mpw;
this.mlevel = mlevel;
}


//default 생성자 메서드 선언
public BB01() {
// 처리 과정을 추가 할 수 있다
}


BB01 b1 = new BB01("id001","pw001","판매자");
BB01 b2 = new BB01();
* 생성자 메서드가 오버로딩 되면 default 생성자 메서드 선언도 필요함. ( default 생성자 메서드 선언 하지 않으면 에러 발생)
* default 생성자 메서드 하나만 필요 할 때는 에러 발생 하지 않는다(정상이다)

 

 

2) Static

static 으로 선언한 변수는 정적으로 고정되어 있고 total 변수에 담기는 값은 갱신된다.

 

 

3) 메서드 오버라이딩

오버라이딩 (Overriding) : 상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의해서 사용하는 것을 의미한다. 메서드의 이름은 물론 파라미터의 개수나 타입도 동일해야 하며, 주로 상위 클래스의 동작을 상속받는 하위 클래스에서 변경하기 위해 사용된다.

 

extends : 부모에서 선언,정의를 모두하며 자식은 메소드,변수를 그대로 사용할 수 있다. 오버라이딩 할 필요 없이 부모에 구현되있는 것을 직접 사용 가능하다.

 

 

4) 추상 클래스, 추상 메서드

추상 메소드(abstract method) : 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드. 추상 메소드는 선언부만이 존재하며, 구현부는 작성되어 있지 않다. 작성되어 있지 않은 구현부를 자식 클래스에서 오버라이딩하여 사용하는 것이다.

 

1. 추상메서드 선언

public abstract class CC01 { public abstract void c_abstract(); //추상메서드 선언

public void c_a() {System.out.println("c_a() CC01.java");} //일반메서드 선언}

 

2.

public class BB01 extends CC01 {

public void c_abstract() { System.out.println("c_abstract BB01.java");}//CC01 추상메서드 선언한 것을 구현, {body}를 채운다

public void c_a() {System.out.println("c_a() BB01.java");}//c_a 메서드 오버라이딩}

 

 

5) interface

다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미. 인터페이스(interface)는 오로지 추상 메소드와 상수만을 포함할 수 있다.

implements : 부모 객체는 선언만 하며 정의(내용)은 자식에서 오버라이딩 (재정의) 해서 사용해야한다.

다형성 : 한 타입의 참조 변수를 통해 여러 타입의 객체를 참조할 수 있도록 하는 것이다. 즉, 상위 클래스 타입의 참조 변수를 통해서 하위 클래스의 객체를 참조할 수 있도록 허용하여 상위 클래스가 동일한 메시지로 하위 클래스들이 서로 다른 동작을 할 수 있도록 한다.

 

Testable01 interface data type으로 tt 객체참조변수를 선언하고 null값을 tt 객체참조변수에 할당한다.
BB01클래스 통해 생성된 객체의 주소값(예:주소1)을 tt 객체참조변수에 할당할 수도 있고,
CC01클래스 통해 생성된 객체의 주소값(예:주소2)을 tt 객체참조변수에 할당할 수도 있다.
이와 같이 다양한 data type(형)을 응용 하는 성질을 다형성이라고 할 수 있다.