반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- paragraph
- 머신러닝
- web 개발
- postorder
- 대이터
- C언어
- cudnn
- KNeighborsClassifier
- java역사
- 재귀함수
- discrete_scatter
- pycharm
- 웹 용어
- html
- web
- 결합전문기관
- tensorflow
- Keras
- 자료구조
- CES 2O21 참여
- web 용어
- CES 2O21 참가
- classification
- bccard
- broscoding
- vscode
- inorder
- mglearn
- 데이터전문기관
- web 사진
Archives
- Today
- Total
bro's coding
java.super/this 본문
반응형
super : 부모를 가르키는 자바 키워드
package step8;
class Person{
String name = "사람이름";
public void study() {
System.out.println("사람이 공부하다.");
}
}
class Student extends Person{
String name = "학생이름";
public void test() {
System.out.println(this.name);
System.out.println(super.name);
}
}
public class TestSuper1 {
public static void main(String[] args) {
Student s = new Student();
s.test();
}
}
/*
* 학생이름
* 사람이름
*/
super() : 부모 생성자를 호출하여 부모 객체를 생성
> 생성자를 명시하지 않으면 기본 생성자가 삽입되고 삽입되는 첫번째 실행문으로 super()가 자동 삽입됨
> 생성자를 명시하더라도 별도의 super() 구문을 명시하지 않으면 컴파일러가 자동 삽입
>이런 원리로 상속 관계에 있는 부모클래스는 자식 객체가 생성되기 전에 부모 클래스의 생성자가 먼저 실행되어 부모 객체 생성 후 자식 객체를 생성하게 됨
class Animal{}
class Person extends Animal{}
// Person(){super();} <이걸 안 해도 자동 생성됨
/*
new Person()이 실행되면
Animal (부모 객체)부터 생성되고
Person 객체가 heap 영역에 생성됨
*/
package step9;
class GrandParent { // extends Object : 상속관계가 없는 클래스는 object를 상속받게 된다.
GrandParent() {
System.out.println("GrandParent 생성자 실행되어 객체 생성");
}
}
class Parent extends GrandParent {
Parent() {
super();
System.out.println("Parent 생성자 실행되어 객체 생성");
}
}
class Child extends Parent {
Child() {
/* super(); */
System.out.println("Child 생성자 실행되어 객체 생성");
}
}
public class TestSuper2 {
public static void main(String[] args) {
new Child();
}
}
package step2;
// super() 를 명시해야하는 경우의 예제
class Animal{
int age;
Animal(int age){
this.age=age;
}
}
class Person extends Animal{
String name;
//Person(){super();} > 이경우에는 error 이유 : Animal에는 기본 생성자가 없기 때문
Person(int age, String name){
super(age); // 명시적으로 super를 호출해 매개변수에 맞는 인자값을 입력해야함
this.name=name;
}
}
반응형
'[IT] > java' 카테고리의 다른 글
java.overriding.toString (0) | 2021.03.02 |
---|---|
java.Object(오브젝트 클래스) (0) | 2021.03.02 |
java.Overriding(메서드 오버라이딩) (0) | 2021.03.02 |
java.분석 설계 (0) | 2021.03.02 |
java.Access Modifier(접근 제어자) (0) | 2021.02.26 |
java.Inheritance(상속) (0) | 2021.02.26 |
java.overloading(오버로딩) (0) | 2021.02.26 |
java.Array(배열) (0) | 2021.02.26 |
Comments