μλ° μΉ κ°λ° νλ μμν¬μΈ Springμ λ°°μ°κΈ° μ μ, μλ° μΈμ΄μ κ°μ²΄ μ§ν₯ κ°λ μ κΈ°λ³Έμ ννν λ€μ§κΈ° μν΄ κ³΅λΆνμ΅λλ€.
μλ λ΄μ©μ Do it! μλ° νλ‘κ·Έλλ° μ λ¬Έ λμλ₯Ό μ°Έκ³ νλ©°, μ΄ν΄ν λ΄μ©μ λ°νμΌλ‘ κΈ°λ‘νμ΅λλ€.
λμ± μμΈν μ€λͺ μ μνμλ©΄ μ μ± μ μ§μ μ½μ΄λ³΄μλ κ²μ μΆμ²λ립λλ€.
- μλ°λ 1991λ μ μμ€ κ³ μ¬λ§μ λΉλ‘―ν μ λ§μ΄ν¬λ‘μμ€ν μ€ μ°κ΅¬μλ€μ΄ μ²μ κ°λ°νλ€.
- κ°μ μ νμ΄λ ν΄λμ© μ₯μΉ λ±μ μ¬μ©νλ μννΈμ¨μ΄λ₯Ό λ§λ€κΈ° μν΄ λ 립μ μΌλ‘ μλνλ λ μμ λ νλ‘κ·Έλλ° μΈμ΄κ° νμνμ¬ μλ°κ° λ§λ€μ΄μ‘λ€.
μλλ μλ°μ νΉμ§μ λμ΄ν κ²μ΄λ€.
μ°Έκ³ ) νλ«νΌ(Platform)μ΄λ νλ‘κ·Έλ¨μ΄ μ€νλλ νκ²½μ λ»νλ€.
- μλ°μμλ .exeμ μ€ν νμΌ λμ .classμ νμ₯μλ₯Ό κ°μ§ λ°μ΄νΈ μ½λλ₯Ό μμ±
- μμ±λ λ°μ΄νΈ μ½λλ₯Ό μλ° κ°μ λ¨Έμ μμ μ€ννμ¬, κ° μ΄μ체μ μ λ§λ μ€ν νμΌ μμ±
- μ΄λ¬ν νΉμ±μ μ΄λ°μ νλ‘κ·Έλ¨μ μ€ν μλλ₯Ό μ νμν¨ μμΈμ΄ λμμ§λ§, μλ° μ»΄νμΌλ¬κ° JIT μ»΄νμΌ λ°©μμΌλ‘ κ°μ λλ©° μ€ν μλκ° κ°μ λ¨
μ°Έκ³ ) JIT(Just In Time) μ»΄νμΌλ¬λ μ€ν μμ μ κΈ°κ³μ΄ μ½λ μμ±, κ°μ μ½λ λ°λ³΅μΌ κ²½μ° μ΄μ μ λ§λ κΈ°κ³μ΄ μ¬μ¬μ©μ νΉμ§μ΄ μλ€.
- κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄λ μΌμ μμκ° μλ μ¬λ¬ κ°μ²΄μ νλ ₯(μνΈ κ΄κ³)μ ν΅ν΄ νλ‘κ·Έλ¨μ ꡬννλ κ²
- 곡ν΅μΌλ‘ μ¬μ©νλ λΆλΆμ μμ νμ§ μκ³ λ μ κΈ°λ₯ μ½κ² μΆκ° κ°λ₯
- μ μ§λ³΄μκ° μ½κ³ νμ₯μ±μ΄ μ’μ νλ‘κ·Έλ¨μ΄ λ μ μμ
- μλ°λ ν¬μΈν° λ¬Έλ²μ μ 곡νμ§ μμ λ©λͺ¨λ¦¬λ₯Ό μ§μ μ μ΄νμ§ μμ. κ·Έμ λ°λΌ μ€λ₯ μνμ±μ μ€μ
- Garbage Collectorλ₯Ό μ΄μ©ν΄ λμ λ©λͺ¨λ¦¬λ₯Ό μκ±°νλ―λ‘ ν¨μ¨μ μΈ λ©λͺ¨λ¦¬ κ΄λ¦¬κ° κ°λ₯ν¨
- JDK(Java Development Kit)λ₯Ό κ°μ§κ³ μμ΄ νλ‘κ·Έλ¨μ λΉ λ₯΄κ² κ°λ°ν μ μμ
- μλ°λ₯Ό νμ©ν μ€ν μμ€κ° λ§μ΄ κ°λ°λμ΄ μκΈ° λλ¬Έμ κ·Έ μμ€λ€μ μ°λνμ¬ λ νλΆν κΈ°λ₯μ λΉ λ₯΄κ² ꡬνν μ μμ
μ°Έκ³ ) JDKλ ν΄λμ€, μλ£ κ΅¬μ‘°, λ€νΈμν¬, μ μΆλ ₯, μμΈ μ²λ¦¬ λ±μ μ΅μ νλ μκ³ λ¦¬μ¦ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ 곡
- λ³μλͺ μ μ¬μ© λͺ©μ μ λ§κ² μλ―Έλ₯Ό λΆμ¬νμ¬ λ§λ€μ΄μΌ νλ€.
- μλ¬Έμ(λμλ¬Έμ)μ μ«μλ₯Ό μ¬μ©ν μ μκ³ , νΉμλ¬Έμλ $, _ λ±λ§ μ¬μ©ν μ μλ€.
- μ«μλ‘ μμν μ μλ€.
- μλ°μμ μ΄λ―Έ μ¬μ© μ€μΈ μμ½μ΄λ μ¬μ©ν μ μλ€.
- Camel Notationμ΄λ μ€κ°μ λ€λ₯Έ λ»μ λ¨μ΄κ° λ±μ₯νλ©΄ 첫 κΈμλ₯Ό λλ¬Έμλ‘ μ¬μ©νλ κ²μ΄λ€. (numberOfStudent, isGood)
- μλ°μμ μ 곡νλ μλ£νμλ κΈ°λ³Έ μλ£νκ³Ό μ°Έμ‘° μλ£νμ΄ μμ
- μ°Έμ‘° μλ£νμ ν΄λμ€νμ
μλλ κΈ°λ³Έ μλ£νμ΄λ€.
- μ μν : byte(1byte), short(2byte), int(4byte), long(8byte)
- μ€μν : float(4byte), double(8byte)
- λ¬Έμν : char(2byte)
- λ Όλ¦¬ν : boolean(1byte)
μλλ μλ£νμ νΉμ§μ΄λ€.
- long νμ μ«μ λ€μ
L
,l
μ μλ³μλ₯Ό λΆμ¬μΌ νλ€. λν floatνμF
,f
λ₯Ό λΆμ¬μΌ ν¨ - μ»΄ν¨ν° λ΄λΆμμ λ¬Έμλ₯Ό ννν λ νΉμ μ μ κ°μΌλ‘ μ νλ€. μ½λ κ°μ λͺ¨μλ κ²μ 'λ¬Έμ μΈνΈ', λ¬Έμλ₯Ό μ½λ κ°μΌλ‘ λ³ννλ κ²μ 'λ¬Έμ μΈμ½λ©', κ·Έ λ°λλ₯Ό 'λ¬Έμ λμ½λ©'μ΄λΌκ³ ν¨
- μλ°λ μ λμ½λ(unicode)μ κΈ°λ°νμ¬ λ¬Έμλ₯Ό νννκΈ° λλ¬Έμ, charνμ 2byteλ₯Ό μ¬μ©
- μμ(constant)λ νμ λ³νμ§ μλ κ°μ
- κ° μ΄κΈ°ν νμ λ€μ κ° λ³κ²½ λΆκ°
- μμλ₯Ό μ μΈν λ μλ£ν μμ
final
μ λΆμ - μ΄λ¦μ μ£Όλ‘ λλ¬Έμλ₯Ό μ¬μ©νκ³ , _ κΈ°νΈλ₯Ό μ¬μ©ν΄ μ¬λ¬ λ¨μ΄λ₯Ό μ°κ²°ν¨ (PI)
final
ν€μλλ₯Ό λΆμΈ λ©μλλ μ€λ²λΌμ΄λ© λΆκ°λ₯final
ν€μλλ₯Ό λΆμΈ ν΄λμ€λ μμ λΆκ°λ₯static
κ³Όfinal
μ λ€λ₯Έ κ². (static
μ νΉμ ν΄λμ€μ μΈμ€ν΄μ€ λͺ¨λκ° κ³΅λμΌλ‘ μ¬μ©νλ ν΄λμ€ λ³μ/λ©μλ)
- νλ‘κ·Έλ¨μμ μ¬μ©νλ λͺ¨λ μ«μ, λ¬Έμ, λ Όλ¦¬κ°μ μΌμ»«λ λ§
- νλ‘κ·Έλ¨μ΄ μμν λ μμ€ν
μ κ°μ΄ λ‘λ©λμ΄
constant pool
μ λμ - μ΄ λ¦¬ν°λ΄μ λ³μλ μμ κ°μΌλ‘ λμ ν μ μμ
(μΌλ° μ°μ°μμ λν κΈ°λ‘μ μλ΅νκ² μ΅λλ€.)
λΉνΈ λ Όλ¦¬ μ°μ°μ
&
: λ κ°μ λΉνΈ κ°μ΄ λͺ¨λ 1μΈ κ²½μ°μλ§ 1μ΄ λ¨|
: νλμ λΉνΈλ§ 1μ΄μ΄λ 1μ΄ λ¨^
: κ°μ κ°μ΄λ©΄ 0, λ€λ₯Έ κ°μ΄λ©΄ 1~
: λΉνΈ κ°μ΄ 0μ΄λ©΄ 1, 1μ΄λ©΄ 0μΌλ‘ λ°κΏ
λΉνΈ μ΄λ μ°μ°μ
<<
: μΌμͺ½μΌλ‘ λΉνΈ μ΄λ. μΌμͺ½μΌλ‘ nλΉνΈ μ΄λνλ©΄ κΈ°μ‘΄ κ°μ 2μ nμ κ³±λ§νΌ κ³±ν¨>>
: μ€λ₯Έμͺ½μΌλ‘ λΉνΈ μ΄λ. μ€λ₯Έμͺ½μΌλ‘ nλΉνΈ μ΄λνλ©΄ κΈ°μ‘΄ κ°μ 2μ nμ κ³±λ§νΌ λλ>>>
: μ€λ₯Έμͺ½μΌλ‘ λΉνΈ μ΄λ, μΌμͺ½μ μ±μμ§λ λΉνΈ κ°μ΄ λΆνΈ λΉνΈμ μκ΄μμ΄ λ¬΄μ‘°κ±΄ 0μ΄ λ¨
(μ μ΄λ¬Έκ³Ό λ°λ³΅λ¬Έμ λν κΈ°λ‘μ μλ΅νκ² μ΅λλ€.)
- κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(Object-Oriented Programming; OOP)μ κ°μ²΄λ₯Ό κΈ°λ°μΌλ‘ νλ‘κ·Έλλ° νλ κ²
- ν λ§λλ‘, κ°μ²΄λ₯Ό λ§λ€κ³ κ°μ²΄ μ¬μ΄μ μΌμ΄λλ μΌμ ꡬννλ κ²
- μ°λ¦¬λ κ°μ²΄λ₯Ό λ¨Όμ μ μνκ³ κ° κ°μ²΄κ° μ΄λ€ κΈ°λ₯μ μ 곡ν μ§, κ°μ²΄ κ° νλ ₯μ μ΄λ»κ² ꡬνν κ²μΈμ§ κ³ λ―Όν΄μΌ ν¨
- ν΄λμ€λ κ°μ²΄μ μμ±κ³Ό κΈ°λ₯μ μ½λλ‘ κ΅¬νν κ²
- ν΄λμ€λ μμ±(λ©€λ² λ³μ)κ³Ό λ©μλλ₯Ό κ°μ§
- ν΄λμ€ μ΄λ¦μ λλ¬Έμλ‘ μμν¨ (coding convention)
μλλ ν΄λμ€λ₯Ό μ μνλ λ¬Έλ²μ΄λ€.
(μ κ·Ό μ μ΄μ) class ν΄λμ€ μ΄λ¦ {
λ©€λ² λ³μ;
λ©μλ;
}
- κ°μ²΄κ° κ°μ§λ μμ±μ ν΄λμ€ λ΄λΆμ λ³μλ‘ μ μΈν κ²
- λ©€λ² λ³μ(member variable)λ λ€λ₯Έ λ§λ‘ μμ±(property) λλ νΉμ±(attribute) λ±μΌλ‘ ννν¨
- λ©€λ² λ³μμ μλ£νμ κΈ°λ³Έ μλ£ν(int, double ..), μ°Έμ‘° μλ£ν(String, Date, μ§μ λ§λ ν΄λμ€ ..) λ λ€ κ°λ₯νλ€.
μ°Έκ³ ) ν¨ν€μ§λ ν΄λμ€ νμΌμ λ¬Άμμ΄λ€. ν¨ν€μ§λ κ³μΈ΅ ꡬ쑰λ₯Ό κ°μ§κ³ , μ΄ κ³μΈ΅ ꡬ쑰λ₯Ό μ ꡬμ±ν΄μΌ μ μ§ λ³΄μκ° νΈλ¦¬νλ€.
- λ©μλλ ν¨μμ κ°μ²΄ μ§ν₯ κ°λ μ΄ ν¬ν¨λ μ©μ΄
- λ©€λ² λ³μλ₯Ό μ¬μ©νμ¬ ν΄λμ€μ κΈ°λ₯μ ꡬνν κ²
- κ°μ²΄μ κΈ°λ₯μ ꡬννκΈ° μν΄ ν΄λμ€ λ΄λΆμ ꡬνλλ ν¨μ
- λ©€λ² ν¨μ(member function)λΌκ³ λ ν¨
- λ©μλμ μ΄λ¦μ κ·Έ κ°μ²΄λ₯Ό μ¬μ©νλ κ°μ²΄(ν΄λΌμ΄μΈνΈ)μ λ§κ² μ§λ κ²μ΄ μ’μ
μλλ ν΄λμ€μ λ΄λΆμ λ©€λ² λ³μ, λ©μλλ₯Ό ꡬνν μ½λμ΄λ€.
public class Student {
int studentID;
String studentName;
int grade;
String address;
public String getStudentName() {
return studentName;
}
public void setStudentName(String name) {
studentName = name;
}
}
- ν΄λμ€λ₯Ό μ¬μ©νλ €λ©΄ main() ν¨μκ° μμ΄μΌ ν¨. μ΄ main() ν¨μλ ν΄λμ€ λ΄λΆμ λ§λ€μ§λ§, ν΄λμ€μ λ©μλλ μλ
- μλ° κ°μ λ¨Έμ (JVM)μ νλ‘κ·Έλ¨μ μμν λ main() ν¨μλ₯Ό κ°μ₯ λ¨Όμ νΈμΆν¨
- main() ν¨μλ ν΄λμ€ λ΄λΆμ λ§λ€μ΄λ λκ³ , μΈλΆμ ν μ€νΈμ© ν΄λμ€λ₯Ό λ§λ€μ΄ μ¬μ©ν΄λ λ¨
- ν μ€νΈ ν΄λμ€μ μ€μ ν΄λμ€ νμΌμ΄ κ°κ° λ€λ₯Έ ν¨ν€μ§μ μμ κ²½μ° importλ¬Έμ μ¬μ©ν΄ ν΄λμ€λ₯Ό λΆλ¬μμΌ ν¨.
- main() ν¨μμμ ν΄λμ€λ₯Ό μ¬μ©ν λ new μμ½μ΄μ μμ±μλ₯Ό μ¬μ©ν΄ ν΄λμ€λ₯Ό μμ±
- ν΄λμ€κ° μμ±λλ€λ κ²μ ν΄λμ€λ₯Ό μ€μ μ¬μ©ν μ μλλ‘ ν λ©λͺ¨λ¦¬λ₯Ό ν λΉ λ°λ κ²μ
- μμ±λ ν΄λμ€λ₯Ό μΈμ€ν΄μ€(νΉμ κ°μ²΄)λΌκ³ νκ³ , μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ ν΄λμ€ν λ³μλ₯Ό μ°Έμ‘° λ³μλΌκ³ ν¨
- μ¦, μΈμ€ν΄μ€λ ν΄λμ€κ° λ©λͺ¨λ¦¬ 곡κ°μ μμ±λ μν
μλλ new μμ½μ΄λ₯Ό μ¬μ©νλ λ°©λ²μ΄λ€.
ν΄λμ€ν λ³μλͺ
= new μμ±μ;
- μ°Έμ‘° λ³μμ λνΈ μ°μ°μ(.)λ₯Ό μ¬μ©νμ¬ λ©€λ² λ³μμ λ©μλλ₯Ό μ°Έμ‘°νμ¬ μ¬μ© κ°λ₯
new Student()
μ κ°μ΄ μ μΈνλ©΄ μ΄ μΈμ€ν΄μ€μ λ©€λ² λ³μλ€μ ν λ©λͺ¨λ¦¬(heap memory)μ μ μ₯
μλλ μΈμ€ν΄μ€λ₯Ό μμ±νλ μ½λμ΄λ€.
Student studentAhn = new Student();
μ§μ λ³μ Ahnμ μμ±λ μΈμ€ν΄μ€λ₯Ό λμ νλ€λ κ²μ, studentAhnμ μΈμ€ν΄μ€κ° μμ±λ ν λ©λͺ¨λ¦¬μ μ£Όμλ₯Ό λμ νλ€λ κ²κ³Ό κ°μ μλ―Έμ΄λ€.
μ°Έκ³ ) ν(heap)μ νλ‘κ·Έλ¨μμ μ¬μ©νλ λμ λ©λͺ¨λ¦¬(dynamic memory)곡κ°μ΄λ€. λ³΄ν΅ κ°μ²΄κ° μμ±λ λ μ¬μ©νλ 곡κ°μ΄λ€.
- μμ±μλ ν΄λμ€λ₯Ό μ²μ λ§λ€ λ λ©€λ² λ³μλ μμλ₯Ό μ΄κΈ°νν΄μ€
- μμ±μκ° μλ ν΄λμ€λ μλ° μ»΄νμΌλ¬μμ λν΄νΈ μμ±μ(default basic.constructor)λ₯Ό μλμΌλ‘ λ§λ¦
- νλ‘κ·Έλλ¨Έκ° λν΄νΈ μμ±μλ₯Ό μ§μ λ§λλ κ²½μ° νμμ λ°λΌ μ½λ ꡬν κ°λ₯
- μΈμ€ν΄μ€κ° μμ±λ λ μΈμ€ν΄μ€ μ΄κΈ°νλ₯Ό μν΄ μμ±μλ₯Ό μ§μ ꡬννκΈ°λ ν¨
μλλ ν΄λμ€ μμ λν΄νΈ μμ±μλ₯Ό μ½λλ‘ κ΅¬νν κ²μ΄λ€.
public class Person {
String name;
float height;
float weight;
public Person() {}
}
- μμ±μ μ€λ²λ‘λλ ν΄λμ€μ μμ±μκ° λ κ° μ΄μ μ 곡λλ κ²
- νμμ λ°λΌ 맀κ°λ³μκ° λ€λ₯Έ μμ±μλ₯Ό μ¬λ¬ κ° λ§λ€ μ μμ
- κ²½μ°μ λ°λΌ ν΄λμ€μμ μΌλΆλ¬ λν΄νΈ μμ±μλ₯Ό μ 곡νμ§ μκΈ°λ ν¨
μ°Έκ³ ) κ°μ²΄ μ§ν₯ νλ‘κ·Έλ¨μμ λ©μλ μ΄λ¦μ κ°κ³ 맀κ°λ³μλ§ λ€λ₯Έ κ²½μ°λ₯Ό μ€λ²λ‘λλΌκ³ νλ€.
μλλ μμ±μ μ€λ²λ‘λλ₯Ό ꡬνν μ½λμ΄λ€.
public class Person {
String name;
float height;
float weight;
public Person() {}
public Person(String pname) {
name = pname;
}
public Person(String pname, float pheight, float pweight) {
name = pname;
height = pheight;
weight = pweight;
}
}
- κ°μ²΄ μ§ν₯ νλ‘κ·Έλ¨μμλ μ κ·Ό μ μ΄μ(access modifier)λ₯Ό μ¬μ©ν΄ (ν΄λμ€ λ΄λΆ λ³μ, λ©μλ, μμ±μμ λν) μ κ·Ό κΆνμ μ§μ ν μ μμ
- privateμΌλ‘ μ μΈν λ©€λ² λ³μλ getter, setter λ©μλ(publicμΌλ‘ μ€μ )λ‘ μ κ·Ό κ°λ₯
- μ 보 μλμ ν΄λμ€ λ΄λΆμμ μ¬μ©ν λ³μλ λ©μλλ₯Ό privateμΌλ‘ μ μΈνμ¬ μΈλΆμμ μ§μ μ κ·Όνμ§ λͺ»νλλ‘ νλ κ²
- μ 보 μλμ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ νΉμ§
μ κ·Ό μ μ΄μ | μ€λͺ |
---|---|
public | μΈλΆ ν΄λμ€ μ΄λμλ μ κ·Ό κ°λ₯ |
protected | κ°μ ν¨ν€μ§ λ΄λΆμ μμ κ΄κ³μ ν΄λμ€μμλ§ μ κ·Ό κ°λ₯ |
μ무κ²λ μλ κ²½μ° | defaultμ΄λ©° κ°μ ν¨ν€μ§ λ΄λΆμμλ§ μ κ·Ό κ°λ₯ |
private | κ°μ ν΄λμ€ λ΄λΆμμλ§ μ κ·Ό κ°λ₯ |
- thisλ μμ±λ μΈμ€ν΄μ€ μ€μ€λ‘λ₯Ό κ°λ¦¬ν€λ μμ½μ΄
- thisλ λμ λ©λͺ¨λ¦¬μ μμ±λ μΈμ€ν΄μ€μ μμΉλ₯Ό μ§μ κ°λ¦¬ν΄
- λν thisλ μμ±μμμ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν μ μμ (μ΄λ νΈμΆ μ½λ μ΄μ μ λ€λ₯Έ μ½λλ₯Ό λ£μΌλ©΄ μ€λ₯ λ°μ)
- thisλ₯Ό νμ©ν΄ μμ±λ ν΄λμ€ μμ μ μ£Όμκ°μ λ°νν μ μμ
- static λ³μλ μ μ λ³μ νΉμ ν΄λμ€ λ³μ(class variable)λΌκ³ λ ν¨
- static λ³μλ ν΄λμ€μμ 곡ν΅μΌλ‘ μ¬μ©νλ λ³μ, μ¦ νλ‘κ·Έλ¨μ΄ μ€νλμ΄ λ©λͺ¨λ¦¬μ μ¬λΌκ°μ λ ν λ² λ©λͺ¨λ¦¬ 곡κ°μ΄ ν λΉλκ³ , κ·Έ ν λͺ¨λ μΈμ€ν΄μ€κ° 곡μ νλ λ³μ
- μλ°μμλ λ€λ₯Έ λ©€λ² λ³μμ²λΌ ν΄λμ€ λ΄λΆμ, static μμ½μ΄λ₯Ό μ¬μ©νμ¬ μ μΈ
μλλ staticμ μ¬μ©λ²μ΄λ€.
static μλ£ν λ³μλͺ
;
μλμ²λΌ class μμ static μμ½μ΄λ₯Ό μ¬μ©νμ¬ μ μΈνλ€.
public class Student {
public static int serialNum = 1000;
public int studentID;
public String studentName;
}
- static λ³μλ μΈμ€ν΄μ€ μμ±κ³Όλ λ³κ°μ΄λ―λ‘ μΈμ€ν΄μ€λ³΄λ€ λ¨Όμ μμ±
- λ°λΌμ static λ³μλ ν΄λμ€ μ΄λ¦μΌλ‘λ μ°Έμ‘°νμ¬ μ¬μ© κ°λ₯ (λ³΄ν΅ ν΄λμ€ μ΄λ¦κ³Ό ν¨κ» μ¬μ©)
- static λ³μλ₯Ό μν λ©μλλ₯Ό static λ©μλ λλ ν΄λμ€ λ©μλ(class method)λΌκ³ ν¨
- static λ©μλ λν static λ³μμ²λΌ ν΄λμ€ μ΄λ¦μΌλ‘ μ§μ νΈμΆ κ°λ₯
μλλ static λ©μλλ₯Ό ꡬνν μ½λμ΄λ€.
public class Student2 {
private static int serialNum = 1000;
int studentID;
String studentName;
int grade;
String address;
public Student2() {
serialNum++;
studentID = serialNum;
}
public static int getSerialNum() {
int i = 10;
return serialNum;
}
public static void setSerialNum(int serialNum) {
Student2.serialNum = serialNum;
}
}
- static λ©μλ λ΄μμ μ§μ λ³μμ ν΄λμ€ λ³μλ μ¬μ©ν μ μμ§λ§, μΈμ€ν΄μ€ λ³μλ₯Ό μ¬μ©νλ©΄ μ€λ₯κ° λ°μν¨
- λ³μλ νΉμ±μ λ§κ² μ μΈν΄μ μ¬μ©νλ κ²μ΄ μ€μν¨
- μ§μ λ³μ(local variable) : ν¨μ/λ©μλ λ΄λΆμμ μ μΈνκΈ° λλ¬Έμ ν¨μ λ°μμλ μ¬μ© λΆκ°
- λ©€λ² λ³μ(member variable) : ν΄λμ€μ μ΄λ λ©μλμμλ μ¬μ© κ°λ₯
- static λ³μ : privateμ΄ μλλΌλ©΄ ν΄λμ€ μΈλΆμμλ κ°μ²΄ μμ±κ³Ό 무κ΄νκ² μ¬μ© κ°λ₯
λ³μ μ ν | μ μΈ μμΉ | μ¬μ© λ²μ | λ©λͺ¨λ¦¬ | μμ±κ³Ό μλ©Έ |
---|---|---|---|---|
μ§μ λ³μ | ν¨μ λ΄λΆμ μ μΈ | ν¨μ λ΄λΆμμλ§ μ¬μ© | μ€ν | ν¨μκ° νΈμΆλ λ μμ±λκ³ ν¨μκ° λλλ©΄ μλ©Έ |
λ©€λ² λ³μ | ν΄λμ€ λ©€λ² λ³μλ‘ μ μΈ | ν΄λμ€ λ΄λΆμμ μ¬μ©, privateμ΄ μλλ©΄ λ€λ₯Έ ν΄λμ€μμ μ κ·Ό κ°λ₯ | ν | μΈμ€ν΄μ€κ° μμ±λ λ νμ μμ±, κ°λΉμ§ 컬λ ν°κ° λ©λͺ¨λ¦¬ μκ±° μ μλ©Έ |
static λ³μ | static μμ½μ΄λ₯Ό μ¬μ©νμ¬ ν΄λμ€ λ΄λΆμ μ μΈ | ν΄λμ€ λ΄λΆμμ μ¬μ©, privateμ΄ μλλ©΄ ν΄λμ€ μ΄λ¦μΌλ‘ λ€λ₯Έ ν΄λμ€μμ μ¬μ© κ°λ₯ | λ°μ΄ν° μμ | νλ‘κ·Έλ¨ μμ μ λ°μ΄ν° μμμ μμ±, νλ‘κ·Έλ¨ μ’ λ£μ λ©λͺ¨λ¦¬ ν΄μ μ μλ©Έ |
- static λ³μλ νλ‘κ·Έλ¨ μμλΆν° λκΉμ§ λ©λͺ¨λ¦¬μ μμ£Όνλ―λ‘, ν¬κΈ°κ° λ무 ν° λ³μλ₯Ό staticμΌλ‘ μ μΈνλ κ²μ μ’μ§ μμ
- μ§μ λ³μ -> ν¨μμμ κΈ°λ₯ ꡬνμ μν΄ μ μ μ¬μ©ν λ
- λ©€λ² λ³μ -> ν΄λμ€μ μμ±μ λνλ΄κ³ , κ° μΈμ€ν΄μ€λ§λ€ λ€λ₯Έ κ°μ κ°μ§ λ
- static λ³μ -> μ¬λ¬ μΈμ€ν΄μ€μμ 곡μ ν΄μ μ¬μ©, ν λ²λ§ μμ±
- μ±κΈν€ ν¨ν΄μ κ°μ²΄ μ§ν₯ νλ‘κ·Έλ¨μμ μΈμ€ν΄μ€λ₯Ό λ¨ νλλ§ μμ±νλ λμμΈ ν¨ν΄
- μ€λ¬΄ νΉμ μ¬λ¬ νλ μμν¬μμ λ§μ΄ μ¬μ©νλ ν¨ν΄
μ°Έκ³ ) λμμΈ ν¨ν΄(design pattern)μ΄λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλ¨μ μ΄λ»κ² ꡬνν΄μΌ λ μ μ°νκ³ μ¬νμ©μ±μ΄ λμ νλ‘κ·Έλ¨μ λ§λ€ μ μλμ§ μ 리ν λ΄μ©μ΄λ€. λ€μ λ§ν΄, νλ‘κ·Έλ¨ νΉμ±μ λ°λ₯Έ μ€κ³ μ νμ μ΄λ‘ νν κ²μ΄λ€.
- privateμΌλ‘ λν΄νΈ μμ±μλ₯Ό λͺ μνμ¬, μΈλΆ ν΄λμ€μμ λ§μλλ‘ μΈμ€ν΄μ€λ₯Ό μ¬λ¬ κ° μμ±νλ κ²μ λ§κΈ° μν΄
- ν΄λμ€ λ΄λΆμμλ§ ν΄λΉ ν΄λμ€μ μμ±μ μ μ΄ν μ μμ
public class Company {
private Company() {}
}
- μ΄ μΈμ€ν΄μ€κ° νλ‘κ·Έλ¨ μ 체μμ μ¬μ©ν μ μΌν μΈμ€ν΄μ€
- μ μΌν μΈμ€ν΄μ€λ₯Ό privateμΌλ‘ μ μΈνμ¬ μΈμ€ν΄μ€ μ€λ₯ λ°©μ§
public class Company {
private static Company instance = new Company();
private Company() {}
}
- μΈλΆ μ¬μ©μ΄ κ°λ₯νλλ‘, μ μΌνκ² μμ±ν μΈμ€ν΄μ€λ₯Ό λ°ννλ public λ©μλ μμ±
- μ΄λ μΈμ€ν΄μ€ μμ±κ³Ό μκ΄μμ΄ νΈμΆν μ μμ΄μΌ νκΈ° λλ¬Έμ, μΈμ€ν΄μ€ λ°ννλ λ©μλλ λ°λμ staticμΌλ‘ μ μΈ
public class Company {
private static Company instance = new Company();
private Company() {}
public static Company getInstance() {
if(instance == null) {
instance = new Company();
}
return instance;
}
}
- μΈλΆ ν΄λμ€μμλ κ°μ²΄λ₯Ό μμ±ν μ μμΌλ―λ‘, staticμΌλ‘ μ 곡λλ getInstance() λ©μλλ₯Ό νΈμΆ
public class CompanyTest {
public static void main(String[] args) {
Company myCompany1 = Company.getInstance();
Company myCompany2 = Company.getInstance();
System.out.println(myCompany1 == myCompany2);
}
}
- λ°°μ΄μ μ¬μ©νλ©΄ μλ£νμ΄ κ°μ μλ£ μ¬λ¬ κ°λ₯Ό ν λ²μ κ΄λ¦¬ κ°λ₯
- λ°°μ΄ μμλ€μ μλ£νμ΄ λͺ¨λ κ°λ€.
μλλ λ°°μ΄μ μ μΈ λ°©λ²μ΄λ€.
μλ£ν[] λ°°μ΄μ΄λ¦ = new μλ£ν[κ°μ];
μλ£ν λ°°μ΄μ΄λ¦[] = new μλ£ν[κ°μ];
- κΈ°λ³Έμ μΌλ‘ λ°°μ΄μ μλ£νμ λ°λΌ μ μλ 0, μ€μλ 0.0, κ°μ²΄ λ°°μ΄μ nullλ‘ μ΄κΈ°νλ¨
- λ°°μ΄μ νΉμ ν κ°μΌλ‘ μ΄κΈ°νν μλ μμ
- νΉμ ν κ°μΌλ‘ μ΄κΈ°ννλ κ²½μ°
[]
μμ κ°μλ μλ΅ν΄μΌ ν¨ - μ μΈκ³Ό λμμ μ΄κΈ°νν λ
new μλ£ν[]
λΆλΆ μλ΅ κ°λ₯ (μ μΈ ν μ΄κΈ°νν λλ μλ΅ν μ μμ)
μλλ λ°°μ΄μ μ μΈνκ³ νΉμ ν κ°μΌλ‘ μ΄κΈ°νν μ½λμ΄λ€.
int[] studentIDs = new int[] {101, 102, 103};
int[] studentIDs = {101, 102, 103};
- λ°°μ΄μ λ°°μ΄ μ΄ κΈΈμ΄λ₯Ό λνλ΄λ length μμ±μ κ°μ§
μλλ λ°°μ΄μ μ¬μ©νκ³ μΆλ ₯ν μ½λμ΄λ€.
public class ArrayTest {
public static void main(String[] args) {
int[] num = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for(int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}
}
}
- κ°μ²΄ λ°°μ΄μ μ μΈνκ² λλ©΄, κ°κ°μ μΈμ€ν΄μ€ μ£Όμ κ°μ λ΄μ 곡κ°μ΄ μμ±λ¨
- μ¦, Bookμ΄λΌλ ν΄λμ€κ° μλ€κ³ κ°μ ν λ
Book[] library = new Book[5];
μ 5κ° κ³΅κ°μλ κ°κ° Book κ°μ²΄μ μ£Όμκ°μ λ΄μ μ μμ - μλ μ½λμ²λΌ κ°μ²΄ λ°°μ΄ μ μΈ νμ new ν€μλλ₯Ό μ¬μ©νμ¬ μμ±λ κ°μ²΄λ₯Ό μ§μ μ μ₯ν΄μΌ ν¨
public class BookArray {
public static void main(String[] args) {
Book[] library = new Book[5];
library[0] = new Book("νλ°±μ°λ§₯", "μ‘°μ λ");
library[1] = new Book("λ°λ―Έμ", "ν€λ₯΄λ§ ν€μΈ");
library[2] = new Book("μ΄λ»κ² μ΄ κ²μΈκ°", "μ μλ―Ό");
library[3] = new Book("ν μ§", "λ°κ²½λ¦¬");
library[4] = new Book("μ΄λ¦° μμ", "μν
μ₯ν리");
for(int i = 0; i < library.length; i++) {
library[i].showBookInfo();
}
for(int i = 0; i < library.length; i++) {
System.out.println(library[i]);
}
}
}
- λ°°μ΄ λ³΅μ¬λ κΈ°μ‘΄ λ°°μ΄κ³Ό μλ£ν, λ°°μ΄ ν¬κΈ°κ° κ°μ λ°°μ΄μ μλ‘ λ§λ€κ±°λ λ ν° λ°°μ΄μ λ§λ€μ΄ κΈ°μ‘΄ λ°°μ΄ μλ£λ₯Ό λΆλ¬μ¬ λ μ¬μ©
- λ°°μ΄ λ³΅μ¬μ κ°μ₯ λ¨μν λ°©λ²μ forλ¬Έμ νμ©ν 볡μ¬μ
- λ€λ₯Έ λ°©λ²μ
System.arraycopy()
λ©μλλ₯Ό μ¬μ©νλ λ°©λ² System.arraycopy(src, srcPos, dest, destPos, length)
λ©μλμ κ° λ§€κ°λ³μ μ€λͺ μ μλμ κ°μ- 볡μ¬ν λμ λ°°μ΄μ κΈΈμ΄κ° 볡μ¬ν μμ κ°μλ³΄λ€ μλ€λ©΄ μ€λ₯ λ°μ
맀κ°λ³μ | μ€λͺ |
---|---|
src | 볡μ¬ν λ°°μ΄ μ΄λ¦ |
srcPos | 볡μ¬ν λ°°μ΄μ 첫 λ²μ§Έ μμΉ |
dest | 볡μ¬ν΄μ λΆμ¬ λ£μ λμ λ°°μ΄ μ΄λ¦ |
destPos | 볡μ¬ν΄μ λμ λ°°μ΄μ λΆμ¬λ£μ 첫 λ²μ§Έ μμΉ |
length | srcμμ destλ‘ λ³΅μ¬ν μμ κ°μ |
- κ°μ²΄ λ°°μ΄μ μμμ μ μ₯λ κ°μ μΈμ€ν΄μ€ μμ²΄κ° μλλΌ μΈμ€ν΄μ€ μ£Όμκ°
- λ°λΌμ κ°μ²΄ λ°°μ΄ λ³΅μ¬ μ λ°°μ΄ μΈμ€ν΄μ€ κ° λ³κ²½λλ©΄ λ λ°°μ΄ λͺ¨λ μν₯ λ°μ
- μ΄λ₯Ό μμ 볡μ¬(shallow copy)λΌκ³ ν¨
- λ°λλ‘, μΈμ€ν΄μ€λ₯Ό λ°λ‘ κ΄λ¦¬νκ³ μΆμΌλ©΄ μ§μ μΈμ€ν΄μ€λ₯Ό λ§λ€κ³ κ·Έ κ°μ 볡μ¬ν΄μΌ ν¨
- μ΄λ₯Ό κΉμ 볡μ¬(deep copy)λΌκ³ ν¨
- μμ λ°°μ΄μ λͺ¨λ 'μΌμ°¨μ λ°°μ΄'μ λν μ€λͺ μ
- μ΄μ°¨μ μ΄μμΌλ‘ ꡬνν λ°°μ΄μ λ€μ°¨μ λ°°μ΄μ΄λΌκ³ ν¨
- λ€μ°¨μ λ°°μ΄μ νλ©΄μ΄λ κ³΅κ° κ°λ ꡬνμ μ¬μ©
- λ°°μ΄μ μ²μμ λκΉμ§ λͺ¨λ μμλ₯Ό μ°Έμ‘°ν λ μ¬μ©νλ©΄ νΈλ¦¬
- λ°°μ΄ μμ κ°μ μμλλ‘ κ°μ Έμ νλμ© λ³μμ λμ
- λͺ¨λ λ°°μ΄μ μμ μμλΆν° λ μμκΉμ§ μ€ν
μλμ²λΌ μ¬μ©ν μ μλ€.
for(μλ£ν λ³μ : λ°°μ΄) {
λ°λ³΅ μ€νλ¬Έ;
}
- κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μ€μ νΉμ§ μ€ νλ
- B ν΄λμ€κ° A ν΄λμ€λ₯Ό μμλ°μΌλ©΄, B ν΄λμ€λ A ν΄λμ€μ λ©€λ² λ³μμ λ©μλλ₯Ό μ¬μ©ν μ μμ
- μμμ μ¬μ©ν¨μΌλ‘μ¨ μ μ§λ³΄μνκΈ° νΈνκ³ νλ‘κ·Έλ¨ μμ /λ΄μ© μΆκ°κ° μ μ°ν¨
- μμνλ λΆλͺ¨ ν΄λμ€(parent class)λ 'μμ ν΄λμ€', μμλ°λ μμ ν΄λμ€(child class)λ 'νμ ν΄λμ€'λΌκ³ ν¨
- μμ κ΄κ³μμλ νμ ν΄λμ€κ° μμ ν΄λμ€λ³΄λ€ ꡬ체μ μΈ ν΄λμ€
- μλ° λ¬Έλ²μΌλ‘ μμμ ꡬνν λλ 'μ°μ₯, νμ₯νλ€'μ λ»μ κ°μ§
extends
μμ½μ΄ μ¬μ© - νμ ν΄λμ€κ° μμ±λ λ μμ ν΄λμ€κ° λ¨Όμ μμ±λ¨
super
μμ½μ΄λ₯Ό μ¬μ©νμ¬ μμ ν΄λμ€μ μ κ·Ό κ°λ₯ (νμ ν΄λμ€ μμ±μμμsuper()
μλ νΈμΆ)- ν΄λμ€ λ³κ²½ μ, νμ ν΄λμ€λ μμ ν΄λμ€λ‘ 묡μμ νλ³νλ¨ (μ΄ κ²½μ° μμ ν΄λμ€μ λ³μμ λ©μλλ§ μ°Έμ‘° κ°λ₯)
- μλ°λ λ€μ€ μμ(ν ν΄λμ€κ° μ¬λ¬ ν΄λμ€λ₯Ό μμ)μ μ§μνμ§ μμ (λ€μ€ μμμΌλ‘ μΈν λͺ¨νΈμ±μ μμ κΈ° μν΄)
- μμ ν΄λμ€μ μ μν λ©μλκ° νμ ν΄λμ€μμμ ꡬνκ³Ό λ§μ§ μμ λ, νμ ν΄λμ€μμ λ©μλλ₯Ό μ¬μ μνλ κ²
- μ€λ²λΌμ΄λ© μ λ°νν, λ©μλ μ΄λ¦, 맀κ°λ³μ κ°μ, 맀κ°λ³μ μλ£νμ΄ κ°μμΌ ν¨
@Override
μ λ Έν μ΄μ μ μ¬μ μλ λ©μλμμ μ»΄νμΌλ¬μ λͺ νν μλ €μ€
μ°Έκ³ ) μ λ
Έν
μ΄μ
μ μμ΄λ‘ μ£Όμμ΄λΌλ μλ―Έλ‘, @μ λ
Έν
μ΄μ
μ΄λ¦
μΌλ‘ νννλ€. μλ°μμ μ 곡νλ μ λ
Έν
μ΄μ
μ μ»΄νμΌλ¬μκ² νΉμ ν μ 보λ₯Ό μ 곡ν΄μ£Όλ μν μ νλ€. 미리 μ μλ μ λ
Έν
μ΄μ
μ νμ€ μ λ
Έν
μ΄μ
μ΄λΌκ³ νλ€. μλλ νμ€ μ λ
Έν
μ΄μ
μ μμμ΄λ€.
μ λ Έν μ΄μ | μ€λͺ |
---|---|
@Override | μ¬μ μλ λ©μλλΌλ μ 보 μ 곡 |
@FunctionalInterface | ν¨μν μΈν°νμ΄μ€λΌλ μ 보 μ 곡 |
@Deprecated | μ΄ν λ²μ μμ μ¬μ©λμ§ μμ μ μλ λ³μ, λ©μλμ μ¬μ© |
@SuppressWarnings | νΉμ κ²½κ³ κ° λνλμ§ μλλ‘ ν¨ |
- μλ°μ λͺ¨λ λ©μλλ κ°μλ©μλμ
- ν΄λμ€λ₯Ό μ¬μ©νμ¬ μΈμ€ν΄μ€λ₯Ό μμ±νλ©΄ λ©€λ² λ³μλ ν λ©λͺ¨λ¦¬μ μμΉνκ³ , λ©μλλ λ©μλ μμμ μμΉν¨
- μΈμ€ν΄μ€κ° λ¬λΌλ λμΌν λ©μλ νΈμΆ
- μΌλ°μ μΌλ‘ λ©μλλ₯Ό νΈμΆνλ€λ κ²μ κ·Έ λ©μλμ λͺ λ Ή μ§ν©μ΄ μλ λ©λͺ¨λ¦¬ μμΉλ₯Ό μ°Έμ‘°νμ¬ λͺ λ Ήμ μ€ννλ κ²
- μ¬μ μλ λ©μλλ μ€μ μΈμ€ν΄μ€μ λ©μλ νΈμΆ, μ¬μ μλμ§ μμ λ©μλλ μμ ν΄λμ€ λ©μλ νΈμΆ (νμλ νΈμΆνλ λ©μλ μ£Όμκ° κ°μ)
- νλμ μ½λκ° μ¬λ¬ μλ£νμΌλ‘ ꡬνλμ΄ μ€νλλ κ² (κ°μ μ½λμμ μ¬λ¬ μ€ν κ²°κ³Ό λμ€λ κ²)
- μΆμ ν΄λμ€, μΈν°νμ΄μ€μμ ꡬνλ¨
- 묡μμ ν΄λμ€ ν λ³νκ³Ό κ°μ λ©μλλ₯Ό λ°νμΌλ‘ ν¨
- μμ ν΄λμ€μμ κ³΅ν΅ λΆλΆμ λ©μλλ₯Ό μ 곡νκ³ , νμ ν΄λμ€μμ μΆκ° μμλ₯Ό λ§λΆμ¬ ꡬν
- λλ μμλ°μ λͺ¨λ ν΄λμ€λ₯Ό νλμ μμ ν΄λμ€λ‘ μ²λ¦¬
- λ€νμ±μ νμ©νμ¬ μ μ°νλ©΄μλ ꡬ쑰νλκ³ , νμ₯μ± μκ³ μ μ§λ³΄μνκΈ° μ’μ νλ‘κ·Έλ¨ κ°λ° κ°λ₯
μλλ λ€νμ±μ νμ©ν μ½λμ΄λ€.
class Animal {
public void move() {
System.out.println("λλ¬Όμ΄ μμ§μ
λλ€.");
}
}
class Human extends Animal {
public void move() {
System.out.println("μ¬λμ΄ λ λ°λ‘ κ±·μ΅λλ€.");
}
}
class Tiger extends Animal {
public void move() {
System.out.println("νΈλμ΄κ° λ€ λ°λ‘ λλλ€.");
}
}
class Eagle extends Animal {
public void move() {
System.out.println("λ
μλ¦¬κ° νλμ λ©λλ€.");
}
}
public class AnimalTest1 {
public static void main(String[] args) {
AnimalTest1 aTest = new AnimalTest1();
aTest.moveAnimal(new Human());
aTest.moveAnimal(new Tiger());
aTest.moveAnimal(new Eagle());
}
public void moveAnimal(Animal animal) {
animal.move();
}
}
- μμμ λ΄€λ―μ΄ μμμ μ¬μ©νλ©΄ λͺ¨λ λ±κΈμμ 곡ν΅μΌλ‘ μ¬μ©νλ μ½λ λΆλΆμ μμ ν΄λμ€μ ꡬννκ³ , κ° λ±κΈλ³ λ΄μ©μ κ°κ°μ νμ ν΄λμ€μ ꡬν
- μμμ μ¬μ©νλ κ²μ΄ νμ μ’μ κ²μ μλ (IS-A κ΄κ³μΌ λ μ¬μ©νλ κ²μ΄ κ°μ₯ ν¨μ¨μ , μΌλ° ν΄λμ€λ₯Ό μ μ°¨ ꡬ체ννλ μν©)
- λ¨μν μ½λ μ¬μ¬μ©μ λͺ©μ μΌλ‘ μλ‘ κ΄λ ¨μ΄ μλ ν΄λμ€λ₯Ό μμ κ΄κ³λ‘ μ¬μ©νλ κ²μ μ’μ§ μμ
μ°Έκ³ ) IS-A
κ΄κ³ : μΌλ°μ μΈ κ°λ
κ³Ό ꡬ체μ μΈ κ΄κ³ (is a relationship; basic.inheritance)
μ°Έκ³ ) HAS-A
κ΄κ³ : ν ν΄λμ€κ° λ€λ₯Έ ν΄λμ€λ₯Ό μμ ν κ΄κ³ (has a relationship; association), μ΄ κ²½μ° μμμ μ³μ§ μμ
- λ€μ΄ μΊμ€ν : μμ ν΄λμ€λ‘ ν λ³νλμλ νμ ν΄λμ€λ₯Ό λ€μ μλ μλ£νμΌλ‘ ν λ³ννλ κ²
instanceof
: μλ£νμ νμΈνλ ν€μλ (νλ³ννκΈ° μ μλ μΈμ€ν΄μ€ μλ£ν)- νμ ν΄λμ€λ‘ νλ³ν ν λλ λͺ μμ μΌλ‘ ν΄μΌ ν¨
μλλ λ€μ΄ μΊμ€ν μ ꡬνν μ½λμ΄λ€.
Animal hAnimal = new Human();
if(hAnimal instanceof Human) { // hAnimal μΈμ€ν΄μ€ μλ£νμ΄ Humanνμ΄λΌλ©΄
Human human = (Human)hAnimal; // μΈμ€ν΄μ€ hAnimalμ HumanνμΌλ‘ λ€μ΄ μΊμ€ν
}
- μΆμ ν΄λμ€λ νμ μΆμ λ©μλ(abstract method)λ₯Ό ν¬ν¨
- μΆμ λ©μλλ ꡬν μ½λκ° μμ (ν¨μ λͺΈμ²΄κ° μμ)
- μΆμ λ©μλλ₯Ό μ μΈν λλ
abstract
μμ½μ΄ μ¬μ© - μΆμ λ©μλλ₯Ό κ°μ§ μΆμ ν΄λμ€μλ
abstract
μμ½μ΄ μ¬μ©ν΄μΌ ν¨ - ν¨μμ ꡬνλΆ(implementation)(μ€κ΄νΈλ‘ κ°μΌ λΆλΆ)
- μ€μ μΆμ ν΄λμ€λ λ§μ νλ μμν¬μμ μ¬μ©νκ³ μλ ꡬν λ°©μ
μλλ addλΌλ μΆμ λ©μλλ₯Ό ꡬνν μ½λμ΄λ€.
abstract int add(int x, int y);
λ€μκ³Ό κ°μ΄ ;κ° μλ {}λ₯Ό μ¬μ©ν λ©μλλ μΆμ λ©μλκ° μλλ€. (ν¨μ ꡬνλΆκ° λΉμ΄μλ λ©μλλ₯Ό ꡬνν κ²)
int add(int x, int y) {}
- μΆμ ν΄λμ€λ₯Ό μμλ°λ ν΄λμ€μ μΆμ λ©μλμ ꡬνμ λν μ± μμ μμν¨
- νμ ν΄λμ€μμ 곡ν΅μΌλ‘ μ¬μ©ν λ©μλλ μΌλ° λ©μλ, νμ ν΄λμ€λ§λ€ λ€λ₯΄κ² ꡬνν λλ μΆμ λ©μλλ‘ μ μΈ
- λͺ¨λ λ©μλλ₯Ό ꡬνν ν΄λμ€μ
abstract
μμ½μ΄λ₯Ό μ¬μ©νμ¬λ μΆμ ν΄λμ€μ (μλ²½ν ꡬνμ΄ μλ κ³΅ν΅ κΈ°λ₯λ§ κ΅¬νν ν΄λμ€, μ¦ μμλ§μ μν΄ λ§λ ν΄λμ€λ μΆμ ν΄λμ€λ‘ λ§λ¦) - μΆμ ν΄λμ€λ
new
μμ½μ΄λ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μμ
λ©μλ | νΉμ§ |
---|---|
ꡬνλ λ©μλ | νμ ν΄λμ€μμ 곡ν΅μΌλ‘ μ¬μ©ν ꡬν μ½λ. νμ ν΄λμ€μμ μ¬μ μ κ°λ₯ |
μΆμ λ©μλ | νμ ν΄λμ€κ° μ΄λ€ ν΄λμ€λμ λ°λΌ ꡬν μ½λκ° λ¬λΌμ§ |
- λμμΈ ν¨ν΄μ ν λ°©λ²μΌλ‘, λͺ¨λ κ°μ²΄μ§ν₯ νλ‘κ·Έλ¨μμ μ¬μ©νλ ꡬν λ°©λ²
- λ©μλ μ€ν μμμ μλ리μ€λ₯Ό μ μνλ λ©μλ
- νμ ν΄λμ€μ λ°λΌ ꡬν λ΄μ©μ΄ λ°λλ κ² λ§κ³ , λ³νμ§ μλ μλ리μ€λ₯Ό ν νλ¦Ώ λ©μλλ‘ μ μ
- ν
νλ¦Ώ λ©μλλ μλ리μ€λ₯Ό μ μν λ©μλ, μ¦ κ³΅ν΅μΌλ‘ μ¬μ©νλ λ©μλμ΄λ―λ‘ νμ ν΄λμ€μμ μ¬μ μνλ©΄ μ λ¨ (κ·Έλμ
final
μμ½μ΄ μ¬μ©) - λ‘μ§ νλ¦μ΄ μ΄λ―Έ μ ν΄μ Έ μλ νλ μμν¬μμ λ§μ΄ μ¬μ©νλ κΈ°λ³Έ ꡬν λ°©λ²
public abstract class Car {
public abstract void drive();
public abstract void stop();
public void startCar() {
System.out.println("μλμ μΌλλ€.");
}
public void turnOff() {
System.out.println("μλμ λλλ€.");
}
// ν
νλ¦Ώ λ©μλ
final public void run() {
startCar();
drive();
stop();
turnOff();
}
}
final
μμ½μ΄λ₯Ό μ¬μ©νλ©΄ λ μ΄μ μμ ν μ μλ€λ λ»- μλ°μμ
final
μμ½μ΄λ λ³μ, λ©μλ, ν΄λμ€μ μ¬μ© κ°λ₯ - μμ μ μΈ μ μΌλ° λ³μμ ꡬλ³νκΈ° μν΄ λλ¬Έμλ‘ μ
μ¬μ© μμΉ | μ€λͺ |
---|---|
λ³μ | final λ³μλ μμλ₯Ό μλ―Έ |
λ©μλ | final λ©μλλ νμ ν΄λμ€μμ μ¬μ μ λΆκ° |
ν΄λμ€ | final ν΄λμ€λ μμ λΆκ° |
final double PI = 3.14;
System.out.println(PI);
PI = 1.23; // error
- 보μκ³Ό κ΄λ ¨λμ΄ μκ±°λ κΈ°λ° ν΄λμ€κ° λ³νλ©΄ μ λλ κ²½μ° ν΄λμ€λ₯Ό
final
λ‘ μ μΈ - λνμ μΌλ‘ JDKμμ String, Integer ν΄λμ€ λ±μ΄
final
λ‘ μ μΈν ν΄λμ€
- ν μ€νΈ μ½λλ₯Ό λ¨Όμ κ°λ°νλ κ°λ° λ°©λ²λ‘ (studentTest.java -> student.java)
- μ΄λ―Έ νμ΅ν μ½λλ₯Ό μ΄ν΄νλ©΄μ μκΈ°λ§μ μ½λ© κ°λ₯
- ν μ€νΈ μ½λλ₯Ό λ§λ€ μ μλ€λ κ²μ μ΄λ―Έ ꡬν μ½λκ° λ¨Έλ¦Ώμμ μλ€λ λ»
- λμΌν λͺ©μ νμ λμΌν κΈ°λ₯μ μννκ² νλ κ²μ΄ μΈν°νμ΄μ€μ μν
- ν΄λμ€ νΉμ νλ‘κ·Έλ¨μ΄ μ 곡νλ κΈ°λ₯μ λͺ μμ μΌλ‘ μ μΈ
- μΆμ λ©μλμ μμλ‘ μ΄λ£¨μ΄μ§
- μΈν°νμ΄μ€ λ΄μ λ©μλλ
public abstract
μμ½μ΄λ₯Ό λͺ μνμ§ μμλ μ»΄νμΌ κ³Όμ μμ μλμΌλ‘ μΆμλ©μλλ‘ λ³ν - μΈν°νμ΄μ€ λ΄μ μ μΈν λ³μλ μ»΄νμΌ κ³Όμ μμ μμλ‘ μλ λ³νλ¨
- μλ°μ λ€νμ±μ κ·Ήλννμ¬ κ°λ° μ½λ μμ μ μ€μ΄κ³ νλ‘κ·Έλ¨ μ μ§λ³΄μμ±μ λμ΄κΈ° μν΄ μ¬μ©
public interface Calc {
double PI = 3.14;
int ERROR = -99999999;
int add(int num1, int num2);
int substract(int num1, int num2);
int times(int num1, int num2);
int divide(int num1, int num2);
}
implements
: ν΄λμ€μμ μΈν°νμ΄μ€λ₯Ό ꡬνν λ μ°λ ν€μλ- μΈν°νμ΄μ€λ‘λ
new
λ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μμ
public class LeastJob implements Scheduler {
@Override
public void getNextCall() {
System.out.println("μλ΄ μ νλ₯Ό μμλλ‘ λκΈ°μ΄μμ κ°μ Έμ΅λλ€.");
}
@Override
public void sendCallToAgent() {
System.out.println("νμ¬ μλ΄ μ
λ¬΄κ° μκ±°λ λκΈ°κ° κ°μ₯ μ μ μλ΄μμκ² ν λΉν©λλ€.");
}
}
- μλ° 8λΆν°λ μΈν°νμ΄μ€ νμ©μ±μ λμ΄κΈ° μν΄ λν΄νΈ λ©μλμ μ μ λ©μλ κΈ°λ₯μ μ 곡
- λν΄νΈ λ©μλ : μΈν°νμ΄μ€μμ ꡬν μ½λκΉμ§ μμ±ν λ©μλ (μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€μμ μ½λ ꡬνν νμ μμ)
- μ μ λ©μλ : μΈμ€ν΄μ€ μμ±κ³Ό μκ΄μμ΄ μ¬μ©ν μ μλ λ©μλ
- μλ¬λ
μ»΄νμΌ μλ¬(compile error)
μμ€ν μλ¬(runtime error)
λ μ’ λ₯κ° μμ - μ€μ μλΉμ€μ κ²½μ°μλ
μ€ν μλ¬
κ° μκΈ°λ©΄ μλΉμ€κ° μ€μ§λλ―λ‘ λ¬Έμ κ° μ¬κ°ν΄μ§ - μλ°λ μ΄λ¬ν λΉμ μ μ’ λ£λ₯Ό μ€μ΄κΈ° μν΄ λ€μν μμΈ μ²λ¦¬ λ°©λ²μ μ 곡ν¨
- μλΉμ€κ° μ΄μ μ€μΈ κ²½μ° λ¨κΈ΄
λ‘κ·Έ(log)
λΆμμ ν΅ν΄ μμΈμ μ°Ύμ μ μμ