μ΄λ² ν¬μ€ν μμλ μλ° κΈ°μ΄ κ°λ μ λν΄ μμ보λλ‘ νκ² μ΅λλ€.
μλ°λ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° μΈμ΄μ
λλ€.
κ°μ²΄μ§ν₯μ ν΅μ¬ κ°λ
μ κ°μ²΄(Object)μ ν΄λμ€(Class)λ‘ λλ μ μμ΅λλ€.
μμμ μλ°μμ ν ν΄λμ€κ° λ€λ₯Έ ν΄λμ€μ μμ±κ³Ό λ©μλλ₯Ό λ¬Όλ €λ°μ μ¬μ¬μ©ν μ μκ² νλ κΈ°λ₯μ λλ€.
μμμ ν΅ν΄ μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ , ν΄λμ€ κ°μ κ³μΈ΅ ꡬ쑰λ₯Ό νμ±ν μ μμ΅λλ€.
μμ ν΄λμ€(λΆλͺ¨ ν΄λμ€): λ€λ₯Έ ν΄λμ€μ μν΄ μμλλ ν΄λμ€.
νμ ν΄λμ€(μμ ν΄λμ€): μμ ν΄λμ€λ₯Ό μμλ°μ κΈ°λ₯μ νμ₯νκ±°λ λ³κ²½ν μ μλ ν΄λμ€.
μμμ μ¬μ©ν λ μμ ν΄λμ€λ extend
ν€μλλ₯Ό ν΅ν΄ λΆλͺ¨ ν΄λμ€λ₯Ό μμλ°μ΅λλ€.
class Animal {
void eat() {
System.out.println("Eating...");
}
}
class Dog extends Animal {
void bark() {
System.out.println("Barking...");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat(); // λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό νΈμΆ
dog.bark(); // μμ ν΄λμ€μ λ©μλλ₯Ό νΈμΆ
}
}
μμ μμμμ Dog
ν΄λμ€λ Animal
ν΄λμ€λ₯Ό μμλ°μ eat()
λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
μλ°μλ μ κ·Ό μ μ΄μ(Access Modifier)κ° μμ΄μ ν΄λμ€, λ©μλ, λ³μμ μ κ·Ό λ²μλ₯Ό μ νν μ μμ΅λλ€.
public: λͺ¨λ ν΄λμ€μμ μ κ·Ό κ°λ₯ν©λλ€.
protected: κ°μ ν¨ν€μ§μ μλ ν΄λμ€λ μμ ν΄λμ€μμ μ κ·Όν μ μμ΅λλ€.
defauilt: μ무 μ κ·Ό μ μ΄μλ λΆμ΄μ§ μμΌλ©΄ default
μ κ·Ό μ μ΄μκ° μ μ©λμ΄, κ°μ ν¨ν€μ§ λ΄μμ μ κ·Ό κ°λ₯ν©λλ€.
private: ν΄λΉ ν΄λμ€ λ΄μμλ§ μ‘κ·Ό κ°λ₯ν©λλ€.
class Person {
public String name; // λͺ¨λ ν΄λμ€μμ μ κ·Ό κ°λ₯
private int age; // Person ν΄λμ€ λ΄μμλ§ μ κ·Ό κ°λ₯
protected String gender; // κ°μ ν¨ν€μ§λ μμ κ΄κ³μμ μ κ·Ό κ°λ₯
public void setAge(int age) {
this.age = age;
}
}
name
μ public
μ΄κΈ° λλ¬Έμ μ΄λμλ μ κ·Όμ΄ κ°λ₯νμ§λ§, age
λ private
μ΄λ―λ‘ Person
ν΄λμ€ μΈλΆμμ μ§μ μ κ·Όν μ μμ΅λλ€.
static
ν€μλλ νΉμ νλλ λ©μλλ₯Ό ν΄λΉ ν΄λμ€ μ체μ κ·μμμΌ μ€λλ€.
class MathUtil {
public static int square(int x) {
return x * x;
}
}
public class Main {
public static void main(String[] args) {
int result = MathUtil.square(5); // κ°μ²΄ μμ± μμ΄ νΈμΆ
System.out.println(resu;t); // 25 μΆλ ₯
}
}
μ¬κΈ°μ square
λ©μλλ static
μ΄λ―λ‘ MathUtil
ν΄λμ€λͺ
μΌλ‘ λ°λ‘ μ κ·Όμ΄ κ°λ₯ν©λλ€.
μλ° μ ν리μΌμ΄μ
μ΄ μ€νλ λ κ°μ₯ λ¨Όμ νΈμΆλλ ν¨μκ° main
ν¨μμ
λλ€.
μλ° νλ‘κ·Έλ¨μ μ§μ
μ (Entry Point) μν μ νλ©°, public static void main(String[] args)
ννλ‘ μ μλ©λλ€.
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
public: λͺ¨λ κ³³μμ μ κ·Ό κ°λ₯νλλ‘ ν©λλ€.
static: main λ©μλλ₯Ό μ€νν λ κ°μ²΄λ₯Ό μμ±νμ§ μκ³ ν΄λμ€λͺ μΌλ‘ μ§μ νΈμΆν μ μλλ‘ ν©λλ€.
void: λ°νκ°μ΄ μμ΅λλ€.
String[] args: λͺ λ Ήμ€μμ μΈμλ₯Ό λ°μ μ μλ λ°°μ΄μ λλ€.
μλ°μμ λ©μλλ νΉμ κΈ°λ₯μ μννλ μ½λ λΈλ‘μ
λλ€.
λ©μλμ ꡬ쑰λ λ€μκ³Ό κ°μ΅λλ€.
μ κ·Όμ μ΄μ λ°ννμ
λ©μλλͺ
(맀κ°λ³μ) {
// λ©μλ λ΄μ©
}
μ κ·Όμ μ΄μ: λ©μλμ μ κ·Ό λ²μλ₯Ό μ€μ ν©λλ€.
λ°ννμ : λ©μλκ° λ°νν κ°μ νμ μ μ§μ ν©λλ€.
void
λ₯Ό μ¬μ©ν©λλ€.λ©μλλͺ : λ©μλμ μ΄λ¦μ λλ€.
맀κ°λ³μ: λ©μλκ° νΈμΆλ λ μ λ¬λ°λ μΈμλ€μ λλ€.
public int add(int a, int b) {
return a + b;
}
add
λ©μλλ public
μ κ·Ό μ μ΄μμ int
λ°ν νμ
μ κ°μ§λλ€.
μλ°μλ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ ν λ μ¬μ©νλ μ€μν ν€μλκ° μμΌλ©°, κ°μ²΄μ ν΄λμ€μ μμμ μ΄ν΄νλ λ° λμμ μ€λλ€.
this
ν€μλλ νμ¬ κ°μ²΄λ₯Ό μ°Έμ‘°νλ λ° μ¬μ©λ©λλ€.
μΌλ°μ μΌλ‘, μΈμ€ν΄μ€ λ³μμ λ©μλλ₯Ό νΈμΆν λ this
λ₯Ό μ¬μ©νμ¬ νμ¬ κ°μ²΄μ λ©€λ²μμ λͺ
νν ν μ μμ΅λλ€.
μΈμ€ν΄μ€ λ³μμ 맀κ°λ³μ ꡬλΆ: μμ±μλ λ©μλμμ μΈμ€ν΄μ€ λ³μμ 맀κ°λ³μ μ΄λ¦μ΄ κ°μ λ ꡬλΆνλ λ° μ¬μ©λ©λλ€.
λ€λ₯Έ μμ±μ νΈμΆ: ν΄λμ€ λ΄λΆμ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λ this()
λ₯Ό μ¬μ©ν©λλ€.
class Person {
private String name;
private int age;
// μμ±μ
public Person(String name, int age) {
this.name = name; // thisλ₯Ό μ¬μ©νμ¬ μΈμ€ν΄μ€ λ³μμ 맀κ°λ³μ ꡬλΆ
this.age = age;
}
public void display() {
System.out.println("Name: " + this.name); // thisλ₯Ό ν΅ν΄ μΈμ€ν΄μ€ λ³μ μ°Έμ‘°
System.out.println("Age: " + this.age);
}
}
μ¬κΈ°μ this.name = name;
μμ this.name
μ μΈμ€ν΄μ€ λ³μ name
μ κ°λ¦¬ν€κ³ , name
μ μμ±μμ 맀κ°λ³μ μ
λλ€.
class Person {
private String name;
private int age;
public Person() {
this("Unknown", 0); // λ€λ₯Έ μμ±μ νΈμΆ
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
μ μμ μμ this("Unknown", 0);
μ μΈμλ₯Ό λ°μμ νΈμΆνλ λ€λ₯Έ μμ±μλ₯Ό κ°λ¦¬ν΅λλ€.
μ΄λ₯Ό ν΅ν΄ μμ±μ μ½λμ μ€λ³΅μ μ€μΌ μ μμ΅λλ€.
super
ν€μλλ λΆλͺ¨(μμ) ν΄λμ€λ₯Ό μ°Έμ‘°νλ λ° μ¬μ©λ©λλ€.
μ£Όλ‘ μμ κ΄κ³μμ μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ λ©€λ²μ μ κ·Όν λ μ¬μ©ν©λλ€.
λΆλͺ¨ ν΄λμ€μ μμ±μ νΈμΆ: μμ ν΄λμ€μ μμ±μμμ λΆλͺ¨ ν΄λμ€μ μμ±μλ₯Ό λͺ μμ μΌλ‘ νΈμΆν λ μ¬μ©ν©λλ€.
λΆλͺ¨ ν΄λμ€μ λ©μλμ λ³μ μ κ·Ό: λΆλͺ¨ ν΄λμ€μ λ©μλλ λ³μλ₯Ό μ¬μ©ν λ μμ ν΄λμ€μμ super
λ₯Ό μ¬μ©ν΄ μ κ·Όν μ μμ΅λλ€.
class Animal {
String color = "Black";
public Animal() {
System.out.println("Animal created");
}
void sound() {
System.out.println("Animal sound");
}
}
class Dog extends Animal {
String color = "Brown";
public Dog() {
super(); // λΆλͺ¨ ν΄λμ€μ μμ±μ νΈμΆ
System.out.println("Dog created");
}
void displayColor() {
System.out.println("Dog color: " + color); // μμ ν΄λμ€μ color
System.out.println("Animal color: " + super.color); // λΆλͺ¨ ν΄λμ€μ color
}
@Override
void sound() {
super.sound(); // λΆλͺ¨ ν΄λμ€μ sound λ©μλ νΈμΆ
System.out.println("Dog barking"); // μμ ν΄λμ€μ μΆκ° κΈ°λ₯
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.displayColor();
dog.sound();
}
}
Animal created
Dog created
Dog color: Brown
Animal color: Black
Animal sound
Dog barking
super()
λ μμ ν΄λμ€μ μμ±μμ λΆλͺ¨ ν΄λμ€μ μμ±μλ₯Ό νΈμΆν©λλ€.
super.color
λ λΆλͺ¨ ν΄λμ€μ color
λ³μλ₯Ό μ°Έμ‘°ν©λλ€.
super.sound()
λ μμ ν΄λμ€μ sound
λ©μλμμ λΆλͺ¨ ν΄λμ€μ sound
λ©μλλ₯Ό νΈμΆνμ¬ νμ₯λ κΈ°λ₯μ μΆκ°ν μ μκ² ν©λλ€.
μΈμ€ν΄μ€λ ν΄λμ€μ κΈ°λ°ν΄ λ©λͺ¨λ¦¬μ μ€μ λ‘ λ§λ€μ΄μ§ κ°μ²΄λ₯Ό λ»ν©λλ€.
μ½κ² λ§ν΄, ν΄λμ€λ μ€κ³λ(μ²μ¬μ§)μ΄κ³ , μΈμ€ν΄μ€λ κ·Έ μ€κ³λλ₯Ό λ°νμΌλ‘ λ§λ€μ΄μ§ μ€μ μ ν(κ°μ²΄)μ λλ€.
μλ₯Ό λ€μ΄, Person
μ΄λΌλ ν΄λμ€λ₯Ό μ μνλ€κ³ ν λ, new Person()
ꡬ문μ ν΅ν΄ Person
ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μμ΅λλ€.
class Person {
String name;
}
public class Main {
public static void main(String[] args) {
Person person1 = new Person(); // Person ν΄λμ€μ μΈμ€ν΄μ€ μμ±
Person person2 = new Person(); // λ λ€λ₯Έ μΈμ€ν΄μ€ μμ±
}
}
μ μ½λλ‘ person1
κ³Ό person2
λ Person
ν΄λμ€μ μΈμ€ν΄μ€μ
λλ€.
κ°κ° λ
립μ μΈ κ°μ²΄λ‘μ λ©λͺ¨λ¦¬μ μ‘΄μ¬νκ² λ©λλ€.
μΈμ€ν΄μ€ λ³μλ κ° μΈμ€ν΄μ€μ μν λ³μλ‘, ν΄λμ€ λ΄λΆμ μ μΈλμ§λ§, μΈμ€ν΄μ€κ° λ§λ€μ΄μ§ λ λ©λͺ¨λ¦¬μ ν λΉλ©λλ€. λ°λΌμ κ° μΈμ€ν΄μ€λ μλ‘ λ€λ₯Έ κ°μ κ°μ§ μ μμ΅λλ€.
class Person {
String name; // μΈμ€ν΄μ€ λ³μ
int age; // μΈμ€ν΄μ€ λ³μ
void displayInfo() {
System.out.println("Name: " + name + ", Age: " + age);
}
}
public class Main {
public static void main(String[] args) {
Person person1 = new Person();
person1.name = "Alice";
person1.age = 25;
Person person2 = new Person();
person2.name = "Bob";
person2.age = 30;
person1.displayInfo(); // Name: Alice, Age: 25
person2.displayInfo(); // Name: Bob, Age: 30
}
}
μ¬κΈ°μ name
κ³Ό age
λ Person
ν΄λμ€μ μΈμ€ν΄μ€ λ³μμ
λλ€.
person1
κ³Ό person2
μΈμ€ν΄μ€λ κ°κΈ° λ€λ₯Έ κ°μ κ°μ§κ² λ©λλ€.
μμ±μλ ν΄λμ€μ μΈμ€ν΄μ€κ° μμ±λ λ νΈμΆλλ νΉλ³ν λ©μλμ
λλ€.
μμ±μμ μ΄λ¦μ ν΄λμ€ μ΄λ¦κ³Ό κ°μμΌ νλ©°, λ°ν νμ
μ΄ μμ΅λλ€.
μμ±μλ κ°μ²΄ μ΄κΈ°νμ μ£Όλ‘ μ¬μ©λ©λλ€.
μμ±μλ new
ν€μλλ₯Ό ν΅ν΄ κ°μ²΄λ₯Ό μμ±ν λ μλμΌλ‘ νΈμΆλ©λλ€.
ν΄λμ€μ μμ±μλ₯Ό μ μνμ§ μμΌλ©΄, μλ°λ κΈ°λ³Έ μμ±μ(맀κ°λ³μκ° μλ μμ±μ)λ₯Ό μλμΌλ‘ μ 곡ν©λλ€.
class Person {
String name;
int age;
// μμ±μ
public Person(String name, int age) {
this.name = name;
this.age = age;
}
void displayInfo() {
System.out.println("Name: " + name + ", Age: " + age);
}
}
public class Main {
public static void main(String[] args) {
Person person1 = new Person("Alice", 25); // μμ±μ νΈμΆ
person1.displayInfo(); // Name: Alice, Age: 25
}
}
μ μ½λμμ Person(String name, int age)
λ μμ±μμ
λλ€. κ°μ²΄λ₯Ό μμ±ν λ name
κ³Ό age
κ°μ μ΄κΈ°νν μ μκ² ν΄μ€λλ€.
μμ±μμ 맀κ°λ³μλ μμ±μλ₯Ό νΈμΆν λ μ λ¬ν μ μλ μΈμ(parameter)μ
λλ€.
맀κ°λ³μλ₯Ό ν΅ν΄ μμ± μ κ°μ²΄μ μΈμ€ν΄μ€ λ³μλ₯Ό μ΄κΈ°νν μ μμ΅λλ€.
class Person {
String name;
int age;
// μμ±μ
public Person(String name, int age) { // 맀κ°λ³μ name, age
this.name = name;
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
Person person1 = new Person("Alice", 25); // "Alice", 25κ° λ§€κ°λ³μλ‘ μ λ¬λ¨
Person person2 = new Person("Bob", 30); // "Bob", 30μ΄ μ λ¬λ¨
}
}
μ μ½λμμ Person(String name, int age)
μ name
κ³Ό age
λ μμ±μμ 맀κ°λ³μμ
λλ€.
μμ±μλ₯Ό νΈμΆν λ μ λ¬λ κ° "Alice"
, 25
, "Bob"
, 30
μ΄ κ°κ° name
κ³Ό age
μ μ΄κΈ°νλ©λλ€.
μ€λμ μλ°μ κΈ°μ΄ κ°λ
μ λν΄ μμ보μμ΅λλ€.
μ μμ§νμ¬ μΆν μλ°λ₯Ό μ¬μ©ν λ μ νμ©νμκΈ° λ°λλλ€.
κ°μ¬ν©λλ€. π