2μ£Όμ°¨μμλ μλ° μμμ λν΄ κ³΅λΆνμλ€.
μλ°λ λ€λ₯Έ μΈμ΄μ λ€λ₯΄κ² λͺκ°μ§ νΉμ§μΌλ‘ νν λΆλ₯ν΄ λ§νλλ°,
μΆμνλ λΆνμν μ 보λ μ¨κΈ°κ³ νμν μ 보λ§μ λ€μ΄λ΄λ κ²μ λ»νλ€.
곡ν΅μ μμ±μ΄λ μ΄λ¦μ λΆμ¬ μ 보λ₯Ό νμνκΈ°λ νλλ°, νλ μ λμ¬ μΈν°νμ΄μ€μ μΆμ λ©μλλΌλ μΉκ΅¬κ° μλ€. μ΄ μΆμ λ©μλλ μ΄λ€ λλμ΄λλ©΄
public abstract void method();
μ§μ§ μ΄ νμ€λ°μ μλ€.
κ·ΈλκΉ μΈν°νμ΄μ€μλ μ΄ λ©μλλ₯Ό μ€ν μμΌλμκΊΌλκ±Έ μμλ§ νκ³ μ§μ§ μ½λλ λ΄λ° μ μ΄λλ건λ°, μΆμνλ μ΄λ° λλμ΄λΌλ κ²μ μλ©΄ λ κ² κ°λ€.
κΈ°λ₯κ³Ό νΉμ±μ λͺ¨μμ ν΄λμ€λΌλ μΊ‘μμ λ¬Άμ΄λλκ²μ λ»νλ€.
κ°μΈμ μΈ κ²½νμ΄μ§λ§ μ΄ μΊ‘μνλΌλ μ₯μ μ μλ°λ‘ λ°μ΄ν°λ² μ΄μ€λ₯Ό 꾸릴λ λ§μ΄ μ°μ΄λ κ² κ°λ€. μλ₯Ό λ€μ΄ AutoRegisterλΌλ λ‘κ·ΈμΈ κ΄λ ¨ ν΄λμ€κ° μλ€λ©΄ λ€λ₯Έ ν΄λμ€μμ λ‘κ·ΈμΈ κ΄λ ¨ μ½λλ₯Ό λ€μ μΈκΈν νμ μμ΄ μ΄ ν΄λμ€λ§ κ°λ€ μ°λ©΄ λκ² μ§? μλ° λλμ΄λ€.
μμμ λΆλͺ¨κ° μμνν
λ λ¬Όλ €μ£Όλκ±°λ€.
λ§ κ·Έλλ‘ λΆλͺ¨ ν΄λμ€μ μλ κ±Έ μμ ν΄λμ€μμλ κ·Έλλ‘ μ¬μ©ν μ μλ κ±Έ λ§νλ€.
μλμ λ¬Έμ λ‘ μμλ₯Ό μ μ΄λ¨μΌλ μ°Έκ³ νλ©΄ λ κ² κ°λ€.
μμνλ λ°©λ²μ μμ ν΄λμ€λ‘ μ¬μ©ν ν΄λμ€μ extends λΆλͺ¨ν΄λμ€
λ₯Ό νλ©΄ λλ€.
μ°Έκ³ λ‘ μμ°μ μμμ Super(); λ©μλ μμμ Super.λ©μλμ΄λ¦(); νμμΌλ‘ μμ±νλ€.
λ€νμ±μ΄λ λ§ κ·Έλλ‘ μ¬λ¬ κ°μ§ ννλ₯Ό κ°μ§λ κ²μ λ§νλ€.
μλ₯Ό λ€μ΄ λΆλͺ¨ ν΄λμ€μ methodλ λ©μλκ° μκ³ μμ ν΄λμ€μλ methodλ λ©μλκ° μμ λ λ§μ½ μμ ν΄λμ€μμ methodλ₯Ό νΈμΆνκ² λλ€λ©΄ μ΄λ€ μΌμ΄ λ²μ΄μ§λκ°?
μ΄λ° λλμ λ¬Έμ κ° λ€νμ±μ λ¬Έμ λΌκ³ μκ°νλ©΄ λλ€.
λνμ μΈ λ€νμ±μΌλ‘λ μ€λ²λ‘λ©κ³Ό μ€λ²λΌμ΄λ©μ΄ μμΌλ©° λμ€μ μ¬μ©νκ² λ κ² κ°λ€.
class Student {
protected int number;
public String name;
}
class GraduateStudent extends Student {
private String tel;
public String lab;
}
public class Test {
public static void main(String[] args) {
GraduateStudent s = new GraduateStudent();
}
}
μ μμ€μ s κ°μ²΄λ₯Ό μμ±νμ λ, λ€μ μ€ νλλ₯Ό μλͺ» μ κ·Όν κ²?
s.lab = "Java Lab";
β s.tel = β010-1234-5678β;
s.name = "νκΈΈλβ;
s.number = 10;
abstract λ©μλμ μ€λͺ μΌλ‘ λ°λ₯Έ κ²μ λͺ¨λ κ³ λ₯΄μΈμ.
β λ©μλμ μ μΈλΆλ§ μλ λ©μλμ΄λ€.
μμκ΄κ³μμ λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό μμ ν΄λμ€μμ λ€μ μ μνλ κ²μ μλ―Ένλ€.
μ€ν λ΄μ©μ μμ ν΄λμ€μμ μ¬μ μ ν΄μΌ νλ€.
β abstract ν΄λμ€μμλ§ μ μΈν μ μλ€.
class A {
}
class B extends A {
}
public class Test {
public static void main(String[] args) {
A [] a = new A[5];
}
}
μ μμ€μ main() λ©μλμ λ€μ΄κ° μ μλ μ½λλ?
a = new A();
β a[0] = new A();
β a[0] = new B();
a = new B();
>PhoneTest νμΌ
public class PhoneTest {
public static void main(String args[])
{
//κ°μ²΄μ μΈ
Phone p = new Phone();
SmartPhone s = new SmartPhone();
//λ°°μ΄κ°μ²΄μ μΈ
Phone[] p1 = new Phone[4];
SmartPhone[] s1 = new SmartPhone[4];
//μ 보μ μ₯
p1[0] = new Phone("None",0);
p1[1] = new Phone("SAM",100);
p1[2] = new Phone("None",0);
p1[3] = new Phone("LG",50);
s1[0] = new SmartPhone(false);
s1[1] = new SmartPhone(true);
//μΆλ ₯
System.out.println(p1[0]);
System.out.println(p1[1]);
System.out.print(p1[2]);
System.out.println(s1[0]);
System.out.print(p1[3]);
System.out.println(s1[1]);
}
}
>SmartPhoneνμΌ
package phone;
public class SmartPhone extends Phone {
private boolean hasBluetooth;
public SmartPhone()
{
this.hasBluetooth = false;
}
public SmartPhone(boolean a)
{
hasBluetooth = a;
}
public boolean getBluetooth()
{
return this.hasBluetooth;
}
public void setBluetooth(boolean hasBluetooth)
{
this.hasBluetooth = hasBluetooth;
}
public String toString() {
return "SmartPhone[hasBluetooth="+hasBluetooth+"]";
}
}
μ΄λ κ² μμκΉμ§ μ 리λ₯Ό λλ§μ³€λ€.
μΆκ°λ‘ λ€νμ±μμ μ€λ²λΌμ΄λ©/μ€λ²λ‘λ©κ°μ κ²½μ°λ @Override
κ°μ μ΄λ
Έν
μ΄μ
(annotation)μ λΆμ΄λ©΄ κ°λ
μ±μ λμ΄κ³ μ»΄νμΌλ¬κ° μ½κ² μΈμν μ μλ€κ³ νλ μ°Έκ³ νλ©΄ λ κ² κ°λ€.