ν΄λμ€
βκ°μ²΄λ₯Ό μ μν μ€κ³λβ
ν΄λμ€(Class)λ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ κΈ°λ³Έ κ΅¬μ± μμμ
λλ€. ν΄λμ€λ κ°μ²΄μ μ€κ³λ μν μ νλ©°, μ΄λ₯Ό ν΅ν΄ κ°μ²΄λ₯Ό μμ±ν μ μμ΅λλ€.
INDEX
β’
κ°μ²΄ (Object)
β’
ν΄λμ€μ ꡬμ±μμ
β¦
1. νλ (Fields)
β¦
2. λ©μλ (Method)
β¦
3. μμ±μ (Constructors)
β¦
4. μ΄κΈ°ν λΈλ‘ (Initialization Blocks)
β’
ν΄λμ€ λ¬Έλ²μ¬ν
β¦
1. ν΄λμ€ μ μΈ ν€μλ
β¦
2. μ£Όμ ν€μλ
β¦
3. ν΄λμ€ μ’
λ₯
β¦
4. κ°μ²΄ μμ± λ¬Έλ²
β’
ν΄λμ€ μμ
κ°μ²΄ (Object)
'μν'μ 'νλ'μ κ°μ§λ λμ
β’
νΉμ§: μ€μΈκ³μ μ‘΄μ¬νλ λͺ¨λ κ²μ΄ κ°μ²΄κ° λ μ μμ
β’
ꡬμ±: κ°μ²΄μ 'μν'λ 'λ³μ'λ‘, κ°μ²΄μ 'νλ'μ 'λ©μλ'λ‘ νν
κ°λ
| μ€λͺ
|
κ°μ²΄ (Object) | ν΄λμ€λ₯Ό κΈ°λ°μΌλ‘ μμ±λ μ€μ²΄ |
μΈμ€ν΄μ€ (Instance) | ν΄λμ€λ‘λΆν° μμ±λ κ°κ°μ κ°μ²΄ |
μΈμ€ν΄μ€ν (Instantiation) | ν΄λμ€λ‘λΆν° κ°μ²΄λ₯Ό μμ±νλ κ³Όμ |
ν΄λμ€μ ꡬμ±μμ
1.
νλ (Fields)
2.
λ©μλ (Method)
3.
μμ±μ
1. νλ (Fields)
ν΄λμ€μ μν(λ°μ΄ν°)λ₯Ό μ μ₯νλ λ³μ
β’
μ’
λ₯
β¦
μΈμ€ν΄μ€ λ³μ
β¦
ν΄λμ€ λ³μ(static)
class Person {
String name; // μΈμ€ν΄μ€ λ³μ
int age; // μΈμ€ν΄μ€ λ³μ
static int count; // ν΄λμ€ λ³μ
}
Java
볡μ¬
2. λ©μλ (Method)
ν΄λμ€μ νλ(κΈ°λ₯)μ μ μνλ μ½λ λΈλ‘
β’
μ’
λ₯
β¦
μΈμ€ν΄μ€ λ©μλ
β¦
ν΄λμ€ λ©μλ(static)
class Person {
// μΈμ€ν΄μ€ λ©μλ
void introduce() {
System.out.println("My name is " + name);
}
// ν΄λμ€ λ©μλ
static int getCount() {
return count;
}
}
Java
볡μ¬
3. μμ±μ (Constructors)
κ°μ²΄κ° μμ±λ λ μ΄κΈ°νλ₯Ό λ΄λΉνλ νΉλ³ν λ©μλ
class Person {
String name;
int age;
// μμ±μ
Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Java
볡μ¬
4. μ΄κΈ°ν λΈλ‘ (Initialization Blocks)
β’
μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ‘: κ°μ²΄ μμ± μ μ€ν
β’
μ μ μ΄κΈ°ν λΈλ‘: ν΄λμ€ λ‘λ© μ μ€ν
class Example {
// μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ‘
{
System.out.println("μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ‘ μ€ν");
}
// μ μ μ΄κΈ°ν λΈλ‘
static {
System.out.println("μ μ μ΄κΈ°ν λΈλ‘ μ€ν");
}
// μμ±μ
Example() {
System.out.println("μμ±μ μ€ν");
}
}
// μ¬μ© μμ
public class InitBlockTest {
public static void main(String[] args) {
System.out.println("Example κ°μ²΄ μμ± μ ");
Example ex = new Example();
System.out.println("Example κ°μ²΄ μμ± ν");
}
}
/* μΆλ ₯ κ²°κ³Ό:
Example κ°μ²΄ μμ± μ
μ μ μ΄κΈ°ν λΈλ‘ μ€ν (ν΄λμ€ λ‘λ© μ 1νλ§ μ€ν)
μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ‘ μ€ν (κ°μ²΄ μμ± μλ§λ€ μ€ν)
μμ±μ μ€ν (κ°μ²΄ μμ± μλ§λ€ μ€ν)
Example κ°μ²΄ μμ± ν
*/
Java
볡μ¬
μ΄κΈ°ν λΈλ‘ vs μμ±μ
μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ‘ | μ μ μ΄κΈ°ν λΈλ‘ | μμ±μ | |
μ€ν μμ | κ°μ²΄ μμ± μλ§λ€ | ν΄λμ€κ° λ‘λλ λ ν λ²λ§ | κ°μ²΄ μμ± μλ§λ€ |
μ¬μ© λͺ©μ | λͺ¨λ μμ±μμμ 곡ν΅μ μΌλ‘ μ€νν΄μΌ νλ μ½λ μ μ | μ μ λ³μ μ΄κΈ°ν | κ°μ²΄ μμ± μ νμν μ½λ μ€ν |
μ€ν νμ | κ°μ²΄ μμ±ν λλ§λ€ μ€νλ¨ | νλ‘κ·Έλ¨ μ€ν μ€ λ± ν λ² μ€νλ¨ | κ°μ²΄ μμ±ν λλ§λ€ μ€νλ¨ |
ν΄λμ€ λ¬Έλ²μ¬ν
1. ν΄λμ€ μ μΈ ν€μλ
[μ κ·Όμ μ΄μ] class ν΄λμ€λͺ
[extends μμν΄λμ€] [implements μΈν°νμ΄μ€] {
// ν΄λμ€ λ΄μ©
}
Java
볡μ¬
2. μ£Όμ ν€μλ
ν€μλ | μ€λͺ
|
class | ν΄λμ€ μ μ |
static | ν΄λμ€ λ³μ/λ©μλ μ μ |
this | νμ¬ κ°μ²΄ μ°Έμ‘° |
super | μμ ν΄λμ€ μ°Έμ‘° |
final | μμ/μ€λ²λΌμ΄λ© κΈμ§ |
abstract | μΆμ ν΄λμ€/λ©μλ μ μ |
public | λͺ¨λ ν΄λμ€μμ μ κ·Ό κ°λ₯ |
private | ν΄λΉ ν΄λμ€ λ΄μμλ§ μ κ·Ό κ°λ₯ |
protected | κ°μ ν¨ν€μ§μ νμ ν΄λμ€μμ μ κ·Ό κ°λ₯ |
3. ν΄λμ€ μ’ λ₯
ν΄λμ€ μ’
λ₯ | μ€λͺ
| νΉμ§ |
μΌλ° ν΄λμ€ | κΈ°λ³Έμ μΈ ν΄λμ€ νν | νλ, λ©μλ, μμ±μ λ±μ ν¬ν¨νλ κΈ°λ³Έ νν |
μΆμ ν΄λμ€ | μΈμ€ν΄μ€νν μ μλ ν΄λμ€ | μ μ΄λ νλ μ΄μμ μΆμ λ©μλλ₯Ό ν¬ν¨ν μ μμ |
μΈν°νμ΄μ€ | μμ ν μΆμν | λͺ¨λ λ©μλκ° μΆμ λ©μλ(Java 8λΆν° default λ©μλ μμΈ), λ€μ€ μμ μ§μ |
λ΄λΆ ν΄λμ€ | λ€λ₯Έ ν΄λμ€ λ΄λΆμ μ μλ ν΄λμ€ | μΈλΆ ν΄λμ€μ λ©€λ²μ μ½κ² μ κ·Ό κ°λ₯ |
μ΅λͺ
ν΄λμ€ | μ΄λ¦μ΄ μλ μΌνμ© ν΄λμ€ | μΈν°νμ΄μ€λ μΆμ ν΄λμ€λ₯Ό μ¦μ ꡬννμ¬ μ¬μ© |
μ μ ν΄λμ€ | static ν€μλλ‘ μ μΈλ λ΄λΆ ν΄λμ€ | μΈλΆ ν΄λμ€μ μΈμ€ν΄μ€ μμ΄λ μ¬μ© κ°λ₯ |
μ€μ²© ν΄λμ€ | λ€λ₯Έ ν΄λμ€ λ΄μ μ μΈλ ν΄λμ€ | μ μ μ€μ²© ν΄λμ€μ λΉμ μ μ€μ²© ν΄λμ€(λ΄λΆ ν΄λμ€)λ‘ λλ¨ |
κ° ν΄λμ€ μ’ λ₯ μ½λ μμ
// μΌλ° ν΄λμ€
public class NormalClass {
private String name;
public void doSomething() {
System.out.println("Doing something");
}
}
// μΆμ ν΄λμ€
abstract class AbstractClass {
private String name;
// μΌλ° λ©μλ
public void normalMethod() {
System.out.println("Normal method");
}
// μΆμ λ©μλ (ꡬνλΆκ° μμ)
abstract void abstractMethod();
}
// μΈν°νμ΄μ€
interface MyInterface {
void methodOne(); // μλμΌλ‘ public abstract
// Java 8λΆν° default λ©μλ κ°λ₯
default void defaultMethod() {
System.out.println("Default implementation");
}
}
// λ΄λΆ ν΄λμ€ μμ
class OuterClass {
private int value = 10;
// λ΄λΆ ν΄λμ€
class InnerClass {
void printValue() {
System.out.println("Value from outer class: " + value);
}
}
// μ μ λ΄λΆ ν΄λμ€
static class StaticNestedClass {
void display() {
// static λ΄λΆ ν΄λμ€λ μΈλΆ ν΄λμ€μ μΈμ€ν΄μ€ λ³μμ μ§μ μ κ·Ό λΆκ°
System.out.println("Static nested class");
}
}
// μ΅λͺ
ν΄λμ€ μ¬μ© μ
void createAnonymous() {
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("Anonymous class running");
}
};
}
}
Java
볡μ¬
4. κ°μ²΄ μμ± λ¬Έλ²
ν΄λμ€νμ
κ°μ²΄λͺ
= new ν΄λμ€λͺ
( μ λ¬μΈμ );
Person person = new Person("νκΈΈλ", 25);
Java
볡μ¬
ν΄λμ€ μμ
public class Animal {
// νλ(λ³μ)
private String name;
private int age;
private static int count = 0;
// μμ±μ
public Animal(String name, int age) {
this.name = name;
this.age = age;
count++;
}
// μΈμ€ν΄μ€ λ©μλ
public void makeSound() {
System.out.println("Animal makes sound");
}
// getter/setter λ©μλ
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
// ν΄λμ€ λ©μλ
public static int getCount() {
return count;
}
}
Java
볡μ¬