์๋ฐ์๋ ๋ถ๋ชจ ํด๋์ค(์์ ํด๋์ค)์ ์์ ํด๋์ค(ํ์ ํด๋์ค) ๊ฐ ์๋ค.
์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค๋ฅผ ์ ํํด์ ๊ทธ ๋ถ๋ชจ ํด๋์ค์ ๋ฉค๋ฒ๋ฅผ ์์๋ฐ์ ๊ทธ๋๋ก ์ธ ์ ์๊ฒ ๋๋ค.
ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ด๊ณ ์ค๋ณต๋ ์ฝ๋๊ฐ ์ค์ด๋ค์ด ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋ค.
๊ทธ๋ฆฌ๊ณ ๊ณตํต์ ์ธ ๊ธฐ๋ฅ์ ๋ถ๋ชจ ํด๋์ค์ ์ถ๊ฐํด์ฃผ๋ฉด ์์๋ฐ์ ์ฌ๋ฌ ๊ฐ์ ์์ ํด๋์ค์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ํ์ฅ์ฑ ๋ํ ์ฉ์ดํ๋ค.
๋ค์ ๋งํด,
์ ์ง๋ณด์
๊ฐ ์ฌ์์ง๊ณํ์ฅ์ฑ์ด ์ฉ์ด
ํด์ง๊ณ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅ
ํด์ง๊ณ์ฝ๋๊ฐ ๊ฐ๊ฒฐ
ํด์ง๋ฉฐ์๊ฐ์ ๋จ์ถ
ํ ์ ์๋ค.
class Child(์์ํด๋์ค) extends Parents(๋ถ๋ชจํด๋์ค) {
// ํ๋
// ์์ฑ์
// ๋ฉ์๋
}
์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด, ๋ถ๋ชจ ๊ฐ์ฒด๊ฐ ๋จผ์ ์์ฑ๋๊ณ ๊ทธ๋ค์์ ์์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
Child child = new Child();
์์ ๊ฐ์ด ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๊ฒฝ์ฐ Child์ ์์ฑ์๊ฐ ๋ช ์์ ์ผ๋ก ์ ์ธ๋์ง ์์๋ค๋ฉด ์ปดํ์ผ๋ฌ๋ ์๋์ ๊ฐ์ด ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์์ฑํ๋ค.
Child() {
super(); // ๋ถ๋ชจ์ ๊ธฐ๋ณธ์์ฑ์ ํธ์ถ
}
๋ค์๊ณผ ๊ฐ์ด ์ง์ ์์ ์์ฑ์๋ฅผ ์ ์ธํ๊ณ ๋ช ์์ ์ผ๋ก ๋ถ๋ชจ ์์ฑ์๋ฅผ ํธ์ถํ ์ ์๋ค.
Child (๋งค๊ฐ๋ณ์ ์ ์ธ, ... ) {
super( ๋งค๊ฐ๊ฐ, ... );
}
๋ง์ฝ super( ๋งค๊ฐ๊ฐ, ... );
๊ฐ ์๋ต๋๋ฉด ์ปดํ์ผ๋ฌ์ ์ํด super();
๊ฐ ์๋์ ์ผ๋ก ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ์ ๊ธฐ๋ณธ์์ฑ์๊ฐ ์กด์ฌํด์ผ ํ๋ค. ๋ง์ฝ ๋ถ๋ชจ์ ๊ธฐ๋ณธ์์ฑ์๊ฐ ์๊ณ ๋งค๊ฐ ๋ณ์๊ฐ ์๋ ์์ฑ์๋ง ์๋ค๋ฉด ๋ฐ๋์ ๋ถ๋ชจ ์์ฑ์ ํธ์ถ์ ์ํด super( ๋งค๊ฐ๊ฐ, ... );
๋ฅผ ๋ช
์์ ์ผ๋ก ํธ์ถํด์ผ ํ๋ค.
super( ๋งค๊ฐ๊ฐ, ... );
๋ ๋ฐ๋์ ์์ ์์ฑ์ ์ฒซ ์ค์ ์์นํด์ผ ํ๋ค.
์์ ํด๋์ค์์ ๋ถ๋ชจ ํด๋์ค์ ๋ฉ์๋๋ฅผ ๋ค์ ์ ์ํ๋ ๊ฒ์ ๋งํ๋ค.
๋ถ๋ชจ ํด๋์ค์ ๋ชจ๋ ๋ฉ์๋๊ฐ ์์ ํด๋์ค์ ๋ง๊ฒ ์ค๊ณ๋์ด ์๋ค๋ฉด ๊ฐ์ฅ ์ด์์ ์ธ ์์์ด์ง๋ง, ์ด๋ค ๋ฉ์๋๋ ์์ ํด๋์ค๊ฐ ์ฌ์ฉํ๊ธฐ์ ์ ํฉํ์ง ์์ ์๋ ์๋ค.
๋ฉ์๋๊ฐ ์ฌ์ ์๋์๋ค๋ฉด ๋ถ๋ชจ ๊ฐ์ฒด์ ๋ฉ์๋๋ ์จ๊ฒจ์ง๊ธฐ ๋๋ฌธ์, ์์ ๊ฐ์ฒด์์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์ฌ์ ์๋ ์์ ๋ฉ์๋๊ฐ ํธ์ถ
๋๋ค.
๋ง์ฝ, ๋ถ๋ชจ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์ถ๋ค๋ฉด super.๋ถ๋ชจ๋ฉ์๋();
๋ก ํธ์ถํ ์ ์๋ค.
ํด๋์ค๋ฅผ ์ ์ธํ ๋ final ํค์๋๋ฅผ class ์์ ๋ถ์ด๋ฉด ์ด ํด๋์ค๋ ์ต์ข
์ ์ธ ํด๋์ค์ด๋ฏ๋ก
์์ํ ์ ์๋ ํด๋์ค๊ฐ ๋๋ค.
public final class ํด๋์ค { ... }
์์ํ ์ ์๋ ํด๋์ค. ์ฆ, ๋ถ๋ชจ๊ฐ ๋ ์ ์๊ณ ์์ ํด๋์ค๋ฅผ ๋ง๋ค ์ ์๋ค.
๋ฉ์๋๋ฅผ ์ ์ธํ ๋ final ํค์๋๋ฅผ ๋ถ์ด๋ฉด ์ด ๋ฉ์๋๋ ์ต์ข ์ ์ธ ๋ฉ์๋์ด๋ฏ๋ก ์ฌ์ ์ํ ์ ์๋ ๋ฉ์๋๊ฐ ๋๋ค.
public final ๋ฆฌํดํ์
๋ฉ์๋(๋งค๊ฐ๋ณ์,..){...}
๋ถ๋ชจ ํด๋์ค์ ์ ์ธ๋ final ๋ฉ์๋๋ ์์ ํด๋์ค์์ ์ฌ์ ์ํ ์ ์๋ค.
public class Parents {
private String nation;
private int age;
Parents(){
this("๋ํ๋ฏผ๊ตญ"); // ๋์ผํ ๋ฉ์๋ ๋ด ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํจ
// 3๋ฒ์งธ๋ก ์คํ๋จ
System.out.println("๋ถ๋ชจ.๊ธฐ๋ณธ ์์ฑ์() : ");
}
Parents(String string){
this(20); // ๋์ผํ ๋ฉ์๋ ๋ด ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํจ
// 2๋ฒ์งธ๋ก ์คํ๋จ
this.nation = string;
System.out.println("๋ถ๋ชจ.๊ธฐ๋ณธ ์์ฑ์(String string) : " + this.nation);
}
Parents(int age){
this.age = age;
// 1๋ฒ์งธ๋ก ์คํ๋จ
System.out.println("๋ถ๋ชจ.๊ธฐ๋ณธ์์ฑ์(int age) : " + this.age);
}
}
public class Child extends Parents{
private String name;
private int age;
public Child() {
this("ํ๊ธธ๋");// ๋์ผํ ๋ฉ์๋ ๋ด ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํจ
// 3๋ฒ์งธ๋ก ์คํ๋จ
System.out.println("์์.๊ธฐ๋ณธ ์์ฑ์() : ");
}
public Child(String name) {
this(50);// ๋์ผํ ๋ฉ์๋ ๋ด ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํจ
// 2๋ฒ์งธ๋ก ์คํ๋จ
this.name = name;
System.out.println("์์.๊ธฐ๋ณธ ์์ฑ์(String name) : " + this.name);
}
public Child(int age) {
this.age = age;
// 1๋ฒ์งธ๋ก ์คํ๋จ
System.out.println("์์.๊ธฐ๋ณธ์์ฑ์(int age) : " + this.age);
}
}
public class ChidlExample {
public static void main(String[] args) {
Child child = new Child();
}
}
๋ถ๋ชจ.๊ธฐ๋ณธ์์ฑ์(int age) : 20
๋ถ๋ชจ.๊ธฐ๋ณธ ์์ฑ์(String string) : ๋ํ๋ฏผ๊ตญ
๋ถ๋ชจ.๊ธฐ๋ณธ ์์ฑ์() :
์์.๊ธฐ๋ณธ์์ฑ์(int age) : 50
์์.๊ธฐ๋ณธ ์์ฑ์(String name) : ํ๊ธธ๋
์์.๊ธฐ๋ณธ ์์ฑ์() :
public class Parents {
private String nation;
private int age;
Parents(){
this("๋ํ๋ฏผ๊ตญ");
System.out.println("๋ถ๋ชจ.๊ธฐ๋ณธ ์์ฑ์() : ");
}
Parents(String string){
this(20);
this.nation = string;
System.out.println("๋ถ๋ชจ.๊ธฐ๋ณธ ์์ฑ์(String string) : " + this.nation);
}
Parents(int age){
this.age = age;
System.out.println("๋ถ๋ชจ.๊ธฐ๋ณธ์์ฑ์(int age) : " + this.age);
}
}
public class Child extends Parents{
private String name;
private int age;
public Child() {
this("ํ๊ธธ๋");// ๋์ผํ ๋ฉ์๋ ๋ด ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํจ
// 3๋ฒ์งธ๋ก ์คํ๋จ
System.out.println("์์.๊ธฐ๋ณธ ์์ฑ์() : ");
}
public Child(String name) {
this(50);// ๋์ผํ ๋ฉ์๋ ๋ด ๋ค๋ฅธ ์์ฑ์๋ฅผ ํธ์ถํจ
// 2๋ฒ์งธ๋ก ์คํ๋จ
this.name = name;
System.out.println("์์.๊ธฐ๋ณธ ์์ฑ์(String name) : " + this.name);
}
public Child(int age) {
super(500); // ๋ง์ฝ super์์ฑ์๋ฅผ ๋ช
์ํ ๊ฒฝ์ฐ ๋ถ๋ชจ์ ๊ธฐ๋ณธ์์ฑ์๋ ์คํ๋์ง ์์
this.age = age;
// 1๋ฒ์งธ๋ก ์คํ๋จ
System.out.println("์์.๊ธฐ๋ณธ์์ฑ์(int age) : " + this.age);
}
}
public class ChidlExample {
public static void main(String[] args) {
Child child = new Child();
}
}
๋ถ๋ชจ.๊ธฐ๋ณธ์์ฑ์(int age) : 500
์์.๊ธฐ๋ณธ์์ฑ์(int age) : 50
์์.๊ธฐ๋ณธ ์์ฑ์(String name) : ํ๊ธธ๋
์์.๊ธฐ๋ณธ ์์ฑ์() :
๋ณต์ฌ ์์ฑ์๋ ๊ฐ์ ํด๋์ค์ ๊ธฐ์กด ๊ฐ์ฒด ๊ฐ์ ๋ณต์ฌํ์ฌ ์ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ์์ฑ์์ ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด์ ๋ณต์ฌ๋ณธ์ ์์ฑํ ์ ์์ผ๋ฏ๋ก ์ ๊ฐ์ฒด๊ฐ ์๋ ๊ฐ์ฒด์ ๋์ผํ ์ํ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค.
public class Person {
String name;
int age;
public Person(Person other) {
this.name = other.name;
this.age = other.age;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Copies {
public static void main(String[] args) {
Person person1 = new Person("Jane", 20);
Person person2 = new Person(person1);
if(person1==person2) {
System.out.println("๊ฐ์ ๊ฐ์ฒด ์
๋๋ค");
} else {
System.out.println("๋ค๋ฅธ ๊ฐ์ฒด ์
๋๋ค.");
}
if(person1.name==person2.name) {
System.out.println("person1๊ณผ person2์ ์ด๋ฆ์ด ๊ฐ์ต๋๋ค.");
} else {
System.out.println("person1๊ณผ person2์ ์ด๋ฆ์ด ๋ค๋ฆ
๋๋ค.");
}
if(person1.age==person2.age) {
System.out.println("person1๊ณผ person2์ ๋์ด๊ฐ ๊ฐ์ต๋๋ค.");
} else {
System.out.println("person1๊ณผ person2์ ๋์ด๊ฐ ๋ค๋ฆ
๋๋ค.");
}
}
}
๋ค๋ฅธ ๊ฐ์ฒด ์
๋๋ค.
person1๊ณผ person2์ ์ด๋ฆ์ด ๊ฐ์ต๋๋ค.
person1๊ณผ person2์ ๋์ด๊ฐ ๊ฐ์ต๋๋ค.
๋ ๊ฐ์ฒด๋ ๋ค๋ฅธ ์ฐธ์กฐ๊ฐ์ ๊ฐ์ง