6개월 대장정/JAVA 개념

11일차 - 오버 로딩, this와 super, 접근 제한자(상속)

pitang 2021. 8. 30. 02:05
반응형

안녕하세요. pitang입니다.
오버 로딩, this와 super, 접근 제한자 까지 알아보도록 하겠습니당.

오버 로딩

오버 로딩은 메서드 중복이라고 한다.
중복은 메서드 또는 생성자를 선언할 때 이름은 같지만 매개 변수의 유형이나 개수를 다르게 선언해 놓는 것을 의미한다.

중복은 이름이 똑같아야 하고, 변수의 유형, 개수, 순서가 달라야 한다. 반환 유형은 상관이 없다.

ex)

overloading_Basic
overloading_MainClass
MainClass console


this

this는 자기 자신 객체를 지정할 때 사용하는 키워드이다.
this. 을 사용하면 동일 클래스 내의 멤버를 참조할 수 있고
this()를 사용하면 생성자 내부에서 자신의 다른 생성자를 호출할 수 있다.

쉽게 this.으로 나의 멤버 변수의 접근 가능, this()로 나의 생성자의 접근 가능이다.

ex)

this_Person(부모 클래스)
this_Student(자식 클래스)
this_Teacher(자식 클래스)
this_Employee(자식 클래스)
750this_MainClass
this_MainClass console

super

super는 한 단계 위 부모 클래스의 객체를 지정할 때 사용하는 키워드이다.
super. 을 사용하면 부모 클래스의 멤버를 참조할 수 있고
super()를 사용하면 생성자 내부에서만 사용이 가능하며, 부모 클래스의 생성자를 호출하는 데 사용한다.

생성자의 첫 라인에는 반드시 this(), super()가 있어야 한다.
하지만, 이를 쓰지 않았다면 묵시적으로 super()가 삽입되어 부모 클래스의 기본 생성자를 자동으로 호출한다.

사용하는 위치는 반드시 생성자 블록 내부의 첫 라인에 기술해야 한다.

object -> 부모클래스 -> 자식 클래스

ex)

super_Person(부모 클래스)
super_Student(자식 클래스)
super_Teacher(자식 클래스)
super_Emplyee(자식 클래스)
super_Mother(자식 클래스)
super_MainClass
super_MainClass console

접근 제한자

접근 제한자는 클래스와 멤버 변수, 메서드, 생성자의 접근을 제어할 수 있는 제한 자이다.
처음에는 조금 지저분해 보일 수 있지만 정말 편한 문법이다.

접근 제한자의 종류는
public - 같은 클래스, 같은 패키지, 다른 패키지를 막론하고 접근 가능.
protected - 같은 클래스, 같은 패키지 접근 가능, 다른 패키지에 속해있는 클래스인 경우 상속관계가 없으면 접근 불가능.
default - 같은 클래스, 같은 패키지 접근 가능, 패키지가 다른 경우 접근 불가능.
private - 같은 클래스 내부가 아니면 접근 불가능.
이 있다.

솔직히 이론으로는 잘 이해가 안 갔지만 예시로 보니까 이해가 갔기에 바로 예시를 보도록 하자.
ex1)

modi.cls.pac1_ A - modi.cls.pac1_B
modi.cls.pac2_C

C에서 보이듯 public 제한자는 같은 클래스, 같은 패키지, 다른 패키지를 막론하고 접근이 가능하기에 A클래스만 사용이 가능하다.

ex2)

modi.construct.pac1_A
modi.construct.pac1_B - modi.construct.pac2_C

A에서 멤버 변수와 생성자를 각각의 제한자로 생성해보고 pac1_B와 pac2_C에서 사용해보면
같은 패키지에 있는 B에서는 public과 default가, 다른 패키지에 있는 C에서는 public만 사용되는 것을 알 수 있다.

ex3)

modi.member.pac1_A
modi.member.pac1_B - modi.member.pac2_C

ex3과 같은 결과를 볼 수 있다.

ex4)

modi.protec.pac1_A - modi.protec.pac2_B
modi.protec.pac2_C



C클래스에서 protectedsms super를 통한 참조를 허용한다.
원래는 보이지 않던 protected 함수들이 super를 통해 접근이 가능하다는 뜻이다.


감사합니다.

*m1맥북을 사용 중입니다.*

728x90
반응형