객체지향
- 캡슐=개체 ->실체:객체
- 객체들로 이루어진 프로그래밍
- [A]->[B] : B가 A의 멤버 또는 부품으로 사용될 경우 : has a (상속)관계
- [A]->[B] : B가 A의 부모 또는 틀,기반,기저,뼈대(프레임)으로 사용될 경우 : Is a (상속)관계
- Is a 상속: (A extends B) 자식클래스에서 멤버를 추가하거나 기존에있는 부모의 함수를 수정
- 부모의 멤버메소드를 수정하는 새로운 메소드를 오버라이드 메소드라고한다.
- 오버라이드 : 자식우선권, 부모함수 덮어쓰기(자식이 부모랑 똑같은 함수를 가지고 있어서 부모것이가려진다)
- 오버로드 : 기존메소드 + 동일한이름 + 파라미터 (즉, 이름동일한 메소드 공존가능)
- 생성자? 객체초기화. 생성자간 호출 : this()
오버로드란 ?
과적된 상태, 기존함수에서 인자가 확장된것
기존애+동일한이름 +파라미터
인자가 추가되어 개별함수가 된다. total() 과 total(int ext)는 개별함수
함수구별하는 식별단위가 인자까지추가되었다(함수지향:함수이름으로만식별)
인자가 달라지면 다른함수로 인식된다.
인자를 받는 생성자만 받도록 설정한 경우?
Frame클래스를 상속하고 오버라이딩
Frame을 상속한다
밖에서는 MyFrame의 기능처럼보인다.
원하는것으로 빠르게 만들어 쓸 수 있게된다.
Exam exam = new NewExam(); / 자식이 부모를 참조하다.
NewExam이 Exam, NewExam 둘다 가지고있어서 둘다 참조할 수 있다.
class A {
int a ; //각 4바이트
int b ;
}
class B extends A{
int c;
}
B b = new B(); //총 12바이트가 만들어진다.
자식이 부모를 가지고있어서 부모를 참조할 수 있다.
A b = new B();
오버로드가 계속 생기면 오버로드숫자만큼 코드가 중복된 것
코드중복이 발생→수정사항이 생기면 중복된 갯수만큼 고쳐야한다.→하나로 합치는 작업이 필요
둘중 하나는 없애고, 한쪽에서 다른 Exam()을 이용하도록한다.
위의 Exam()이 없어진다. 밑의 Exam()가 위의 Exam()일을 할 수 있다.
위에서는 호출만
밑에서는구현
오버로드는 코드중복->중복값갖고있는애들이 호출을 하게한다.
초기화는 자식부터, 자식생성자 끝에서 부모생성자호출
Q. 어제수업 기본생성자를 자동으로 호출해서 super() 가 생략.
오늘은 디스를 써서 오버로드된 생성자호출.그럼 super()는 호출이 안됨 ?
: 안된다.
super()는 this이후에 호출된다.
NewExam() → this(1) → NewExam(int value) → super(value) → com=10;
객체생성은 부모것이만들어지고 자식객체가 만들어지지만, 초기화는 자식부터 초기화된다.
This(1)가 끝난이후에 super()가 호출된다
매개변수가 있는 super(value)를 명시해서 매개변수있는 부모생성자를 호출하도록했다.
super(value)를 쓰지않았다면 묵시적으로 super()가 호출된다.
생성자는 최초로 한번만 호출되어야하는데, 내가 초기화하려는게 매개변수하나있는거니까 부모생성자도 super(value) 로 명시했다. 이걸적지않앗다면 컴파일러가 기본생성자로 초기화 했을것
'2021 Newlecture > JAVA' 카테고리의 다른 글
protected method() / 자식에게 부모 객체넘겨주기 (0) | 2021.04.07 |
---|---|
Constructor Dependency Injection 생성자 종속성 주입 / abstract / protected (0) | 2021.04.06 |
추상화 / abstract class/ abstract method (0) | 2021.04.05 |
Is a , has a 상속 정리 / 함수 호출 관계/ 동적바인딩 / 부모형식의 참조변수 (0) | 2021.04.02 |
Is a 상속관계 / Override / super() (0) | 2021.03.31 |
객체지향에서 절차를 나누고 정리하는 방법/ has A 상속 (0) | 2021.03.30 |
프로그램을 만드는 순서 /개체와 서비스함수 / 객체지향에서의 캡슐화 (0) | 2021.03.29 |
객체지향 프로그래밍 / this / static메소드 / 인스턴스메소드/ 생성자 / Getter&Setter (0) | 2021.03.27 |