헷갈리거나 틀린 문제를 적었습니다.
a. 모든 생성의 이름은 클래스의 이름과 동일해야한다.
b. 생성자는 객체를 생성하기 위한 것이다.
c. 클래스에는 생성자가 반드시 하나 이상 있어야 한다.
d. 생성자가 없는 클래스는 컴파일러가 기본 생성자를 추가한다.
e. 생성자는 오버로딩 될 수 없다.
초기 답 -> e
해답 -> b, e
생성자가 객체를 생성할 때 사용되기는 하지만, 객체를 초기화할 목적으로 사용되는 것이다.
객체를 생성하는 것은 new연산자이다.
초기 답 -> 문제가 뭘 묻는지 이해 못함
해답 -> 자식 클래스 초기화 과정에서 부모 클래스의 멤버에 접근하는 경우가 있기 때문
class Parent {
int x = 100;
Parent() {
this(200);
}
Parent(int x) {
this.x = x;
}
int getX() {
System.out.println("this"+this.x);
return x;
}
}
class Child extends Parent {
int x = 3000;
Child() {
this(1000);
}
Child(int x){
this.x = x;
}
}
public class Ex7_7 {
public static void main(String[] args) {
Child c= new Child();
System.out.println(c.getX());
}
}
class Outer {
class Inner {
int iv=100;
}
}
class Outer {
static class Inner {
int iv=200;
}
}
public class Ex7_25 {
public static void main(String[] args) {
}
}
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
System.out.println(inner.iv);
package com.github.can019.base.ch07;
import java.awt.*;
import java.awt.event.*;
public class Ex7_28 {
public static void main(String[] args) {
Frame f = new Frame();
f.addWindowFocusListener(new EventHandler);
}
}
class EventHandler extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
e.getWindow().setVisible(false);
e.getWindow().dispose();
System.exit(0);
}
}
import java.awt.*;
import java.awt.event.*;
public class Ex7_28 {
public static void main(String[] args) {
Frame f = new Frame();
f.addWindowFocusListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
e.getWindow().setVisible(false);
e.getWindow().dispose();
System.exit(0);
}
});
}
}