icon |
---|
java |
μ€λ³΅λ μ½λλ₯Ό λ°©μ§νκΈ° μν¨
public class Main {
public static void main(String[] args) {
add(50,10);
System.out.println(minus(40,10)); //returnμ μ¬μ©μ λ°κΉ₯μμλ μΆλ ₯κ°λ₯
}
public static void add(int x, int y){ //(νλΌλ―Έν°) voidκ° μλ€λ 건 return κ°μ΄ μλ€λ κ²
System.out.println(x+y);
}
public static int minus(int x, int y){
return x-y;
}
}
public class Main {
public static void main(String[] args) {
System.out.println(add(50,10));
System.out.println(add(40,10,12));
System.out.println(add(10,12,13,14));
}
public static int add(int x, int y){ //λ©μλ μ΄λ¦μ΄ κ°λ€λ©΄ λ³μμ κ°μκ° λ¬λΌμΌ ν¨
return x+y;
}
public static int add(int x, int y,int z){
return x+y+z;
}
public static int add(int... numbers){ //...μ 0κ°μ΄μμ μ«μ
int sum = 0;
for(int i =0; i < numbers.length; i++){
sum = sum + i;
}
return sum;
}
}
static λ©λͺ¨λ¦¬μ μ²μ νλ‘κ·Έλ¨ μ€νμ μ²μ λ‘λκ° λλ λΆλΆμ΄λΌ λ³λμ μμμ λ©λͺ¨λ¦¬λ₯Ό μ°¨μ§νκΈ° λλ¬Έμ public static void main(String[] args)
λ μμμΈ public class Main
κ³Όλ μκ΄μ΄ μμ
ν΄λμ€ : μμ±κ³Ό κΈ°λ₯μΌλ‘ λλ μ§
getter μ setter : κ΅³μ΄ privateμΌλ‘ λ³μλ₯Ό μμ±νκ³ get/setμ μ΄μ©ν΄ λ°μ΄ν°μ μ κ·Όνλ μ΄μ λ λ°μ΄ν° 무결μ±
μ§ν€κΈ° μν¨μ΄λ€. λ§μ½ μμμ κ°κ²©, κ°―μκ° μμκ° μ¨λ€λ©΄ λ°μ΄ν° νμμ λ§μ§ μκΈ° λλ¬Έμ getset ν¨μ λ΄μμ 무결μ±μ μ§μΌμ£Όμ΄μΌ νλ€.
private String name;
private int age;
//privateμ νλ λμ getterμ setterμ ν΄μ€
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
μμ±μμ κ·μΉ
- ν΄λμ€λͺ κ³Ό λ©μλλͺ μ΄ λμΌνλ€.
- 리ν΄νμ μ μ μνμ§ μλλ€. (voidλ μ¬μ©νμ§ μλλ€.)
Person(String name, int age){ //νλλ₯Ό μ λ¬λ°μ λ§λλ μ€λ²λ‘λ λ μμ±μ
this.name = name; //μ΄κΈ°ν thisλ μΈλΆλΌλ λ³μμμ λμ΄μ¨ κ°, λ΄κ° κ°μ§ nameμ΄λ? μλλλ₯Ό ꡬλΆνκΈ° μν΄
this.age = age;
}
μμ±μλ₯Ό μ΄μ©νμ¬ λ§λ€λ©΄ λ΄κ° λͺ¨λ₯΄λ μΈμ΄λ‘ μΆλ ₯λΌμ μ€λ₯Έμͺ½ λ§μ°μ€ ν΄μ toStringμ ν΄μ£Όλ©΄ μ°λ¦¬κ° μλ μΈμ΄λ‘ μΆλ ₯λ¨
@Override
public String toString() {
return "Person{" +
"name='" + name + '\\'' +
", age=" + age +
'}';
} //μ€λ₯Έμͺ½ λ§μ°μ€λ₯Ό ν΅ν΄ toStringμ ν΄λ¦νμ¬ λ§λ€μ΄μ€
μ
ν
public class Main {
public static void main(String[] args) {
System.out.println(add(50,10));
System.out.println(add(40,10,12));
System.out.println(add(10,12,13,14));
Person person = new Person();
Person person2 = new Person("νκΈΈλ", 10);
System.out.println(person);
System.out.println(person2);
}
public static int add(int x, int y){ //λ©μλ μ΄λ¦μ΄ κ°λ€λ©΄ λ³μμ κ°μκ° λ¬λΌμΌ ν¨
return x+y;
}
public static int add(int x, int y,int z){
return x+y+z;
}
public static int add(int... numbers){ //...μ 0κ°μ΄μμ μ«μ
int sum = 0;
for(int i =0; i < numbers.length; i++){
sum = sum + i;
}
return sum;
}
}
class Person{ //μμ±κ³Ό κΈ°λ₯μΌλ‘ λλ μ§
private String name;
private int age;
Person(){ //ν΄λμ€μ μ΄λ¦μ΄ κ°μ κΈ°λ³Έμμ±μ
}
Person(String name, int age){ //νλλ₯Ό μ λ¬λ°μ λ§λλ μ€λ²λ‘λ λ μμ±μ
this.name = name; //μ΄κΈ°ν thisλ μΈλΆλΌλ λ³μμμ λμ΄μ¨ κ°, λ΄κ° κ°μ§ nameμ΄λ? μλλλ₯Ό ꡬλΆνκΈ° μν΄
this.age = age;
}
//privateμ νλ λμ getterμ setterμ ν΄μ€
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\\'' +
", age=" + age +
'}';
} //μ€λ₯Έμͺ½ λ§μ°μ€λ₯Ό ν΅ν΄ toStringμ ν΄λ¦νμ¬ λ§λ€μ΄μ€
}
model ν¨ν€μ§μ Person.classλ₯Ό λ£μ΄μ€
package model;
public class Person{ //μμ±κ³Ό κΈ°λ₯μΌλ‘ λλ μ§
private String name;
private int age;
public Person(){ //publicμ κΌ μ¨μ€μΌ ν¨ μκ·Έλ¬λ©΄ mainμμ μ κ·Ό λΆκ°
}
public Person(String name, int age){
this.name = name;
this.age = age;
}
//privateμ νλ λμ getterμ setterμ ν΄μ€
public String getName() { //getμ κ°μ κΊΌλ΄λ κ²
return name;
}
public void setName(String name) { //setμ κ°μ λ£λ κ²
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\\'' +
", age=" + age +
'}';
}
}
com.company ν¨ν€μ§ μμ Main μλ°
package com.company;
import model.Person;
public class Main {
public static void main(String[] args) {
Person person = new Person();
Person person2 = new Person("νκΈΈλ", 10);
System.out.println(person);
System.out.println(person2);
}
}
μμ(ν΄λμ€)μ΄ μμλ°κ³ μΆμ λΆλͺ¨(ν΄λμ€)λ₯Ό μ νν΄μ λ¬Όλ €λ°λλ€. μ΄λ μμλ°λ ν΄λμ€λ₯Ό μμ ν΄λμ€, νμ ν΄λμ€ λλ μλΈ ν΄λμ€ λΌκ³ λΆλ₯Έλ€.
μμμ ν΄μ£Όλ ν΄λμ€λ₯Ό λΆλͺ¨ ν΄λμ€, μμ ν΄λμ€ λλ μνΌ ν΄λμ€
- μμ λ°©λ² : class ν΄λμ€(μμ) extends ν΄λμ€(λΆλͺ¨)
- μμ ν΄λμ€λ λΆλͺ¨ ν΄λμ€λ‘λΆν° λ©μλμ νλλ₯Ό λ¬Όλ €λ°μ μ¬μ©, λΆλͺ¨ ν΄λμ€λ μμ ν΄λμ€μμ μ μν λ©μλλ νλλ₯Ό μ¬μ©νμ§ λͺ»νλ€
- μμ ν΄λμ€λ μ¬λ¬ λΆλͺ¨ ν΄λμ€λ‘λΆν° μμλ°μ§ λͺ»νλ€. μ¦, λ¨μΌμμλ§ κ°λ₯
- λΆλͺ¨ ν΄λμ€λ μ¬λ¬ μμ ν΄λμ€μκ² μμμ΄ κ°λ₯
- μμ ν΄λμ€κ° λ λ€μν κΈ°λ₯μ΄ κ°λ₯νλ―λ‘ μμ ν΄λμ€λ‘ μΈμ€ν΄μ€λ₯Ό μμ±νλ κ²μ΄ ν¨μ¨μ
hero.isFlying();
//getμ μμ±λ κ°μ§κ³ μκ³ booleanμ κ²½μ° isλΌλ μ΄λ¦μΌλ‘ getterμ κ°μ§
β μ΄μ κ²½μ° μ΄λμ μ μ μλλ? Heroμ getterλ₯Ό 보면 μ μ μμ
π‘ set = μ€μ , get = κ°μ κ°μ Έμ€λ κ²,
- λΌμ§μ κΈν΅μ λ§λ λ€ > λ³μ μ μΈ
- κ·Έ μμ λμ μ μΆνλ€ > set
- κ·Έ μμ λμ΄ μΌλ§λ λ€μ΄ μλμ§ λ³Έλ€ > get
- μ¬μ© μ΄μ : SET, GET λ©μλλ₯Ό μ¬μ©νλ μ΄μ λ μΈλΆλ‘λΆν° λ³μκ°μ μ§μ μ μΌλ‘ μ κ·Όνλκ²μ λ§κΈ° μν΄μλ€. μ§μ μ κ·Όνκ° λλ©΄ κ°μ΄ λ³νκ² λκ³ κ·Έλ¬λ©΄
λ°μ΄ν° 무결μ±
μ΄ κΉ¨μ§ μ μκΈ° λλ¬Έμ΄λΌκ³ ν¨
μΆμ ν΄λμ€λ λ¬Έλ²λ³΄λ€λ 무μμ΄κ³ μ μ¬μ©νλμ§ λ³Έμ§μ μΈ κ°λ μ μμμΌ ν¨
μΆμν΄λμ€λ Aν΄λμ€, Bν΄λμ€, Cν΄λμ€λ€ κ°μ λΉμ·ν νλμ λ©μλλ₯Ό 곡ν΅μ μΌλ‘ μΆμΆν΄ λ§λ€μ΄μ§ ν΄λμ€λ€.
μ€μ²΄ν΄λμ€λ μ€μ²΄κ° λλ¬λλ ν΄λμ€λ‘ Aν΄λμ€, Bν΄λμ€, Cν΄λμ€μ κ°μ κ²λ€μ΄λ€.
μΆμν΄λμ€λ μ€μ²΄ ν΄λμ€μ 곡ν΅μ μΈ λΆλΆμ μΆμΆν΄ μ΄λμ λ κ·κ²©μ μ‘μλμ μΆμμ μΈ ν΄λμ€, κ·Έλ¦¬κ³ μ€μ²΄ν΄λμ€μλ μμκ΄κ³
So, μ€μ²΄ν΄λμ€λ μ€μ κ°μ²΄λ₯Ό μμ±ν μ λμ ꡬ체μ±
μ κ°μ§λ€. νμ§λ§ μΆμν΄λμ€λ μμ§ λ©μλμ λ΄μ©μ΄ μΆμμ
μ΄κΈ° λλ¬Έμ κ°μ²΄λ₯Ό μμ± λΆκ°
Charter charter = new Charter(); // Charterκ° μΆμν΄λμ€μΈ κ²½μ° μλ¨!!!
- μΆμν΄λμ€λ ν΄λμ€ μμ abstractλ₯Ό λΆμ¬μ£Όκ³ μΆμ νλλ λ©μλλ₯Ό λ§λ λ€!
- {}μμ΄ λ΄μ©μ΄ μκΈ° λλ¬Έμ μΆμ λ©μλ
public abstract class Character {
//Magician λν μΈμμ κΈ°λ₯μ κ°μ§κ³ μΆλ€λ μ μ μ μΊλ¦ν°μ μΈμμ κΈ°λ₯μ κ°μ ν
public abstract void attack(Hero hero);//{}μμ΄ λ΄μ©μ΄ μκΈ° λλ¬Έμ μΆμ λ©μλ
}
μΆμ ν΄λμ€λ₯Ό μμνλ μμν΄λμ€μ κ²½μ° extendsλ₯Ό μ¬μ©ν΄μ μΆμν΄λμ€ μμ
public class Magician extends Character {
@Override
public void attack(Hero hero) {
//μμ λ΄μ©μ μ μ΄μ€μΌ ν¨
}
}
μΆμν΄λμ€μ κ°μ μν
νμ₯μ±
κ³Ό μ μ°μ±
μ κ°μ§, λ€μ€μμ κ°λ₯, λ€νμ±
μλ λκ°λ κ°μ μλ―Έ
public abstract class Character {
//Magician λν μΈμμ κΈ°λ₯μ κ°μ§κ³ μΆλ€λ μ μ μ μΊλ¦ν°μ μΈμμ κΈ°λ₯μ κ°μ ν
public abstract void attack(Hero hero);//{}μμ΄ λ΄μ©μ΄ μκΈ° λλ¬Έμ μΆμ λ©μλ
}
interface Character{ //μΆμ΄ν΄λμ€μ λκ°μ κΈ°λ₯
void attack(Hero hero);
}
but μΆμν΄λμ€λ μΈν°νμ΄μ€ μ°Έμ‘°μ
μΆμν΄λμ€ : extends μ¬μ©
public class Magician extends Character {
@Override
public void attack(Hero hero) {
}
}
μΈν°νμ΄μ€ : implements μ¬μ©
public class Magician implements Character {
@Override
public void attack(Hero hero) {
}
}
ArrayList μ¬μ©μ μ¬λ¬κ°μ§ νμ μ¬μ©κ°λ₯
ArrayList<Character> characterArrayList = new ArrayList<>(); //<>μμ Charcter λμ Magician λ± κ°λ₯
characterArrayList.add(magician);
characterArrayList.add(magician2);
characterArrayList.add(hero); //μ¬λ¬κ°μ§ νμ
μ λ΄μ μ μλ€λ λ€νμ±
μ°Έμ‘°λ³μκ° μ°Έμ‘°νκ³ μλ μΈμ€ν΄μ€μ μ€μ νμ μ μμ보기 μν΄ instanceof μ°μ°μλ₯Ό μ¬μ©ν©λλ€. μ£Όλ‘ μ‘°κ±΄λ¬Έμ μ¬μ©
Magician.class
public class Magician extends Character implements ICharacter {
@Override
public void attack(Hero hero) {
}
@Override
public void attack(Person person) {
}
}
IChatacter μΈν°νμ΄μ€
package model;
public interface ICharacter { //μΆμ΄ν΄λμ€μ λκ°μ κΈ°λ₯
void attack(Person person);
}
Character.class
package model;
public abstract class Character extends Person{
//Magician λν μΈμμ κΈ°λ₯μ κ°μ§κ³ μΆλ€λ μ μ μ μΊλ¦ν°μ μΈμμ κΈ°λ₯μ κ°μ ν
public abstract void attack(Hero hero);//{}μμ΄ λ΄μ©μ΄ μκΈ° λλ¬Έμ μΆμ ν΄λμ€
}
- μ‘°μ μ°Έμ‘°λ³μ instanceof μμ μΈμ€ν΄μ€ (무쑰건 O)
- Object o instanceof μμ μΈμ€ν΄μ€ (무쑰건 O)
- μμ μ°Έμ‘°λ³μ instanceof μ‘°μ μΈμ€ν΄μ€ (κ°λ₯ν¨ O)
Magician magician = new Magician();
Character magician2 = new Magician();
ICharacter magician3 = new Magician();
if(magician2 instanceof Magician){ //MagicianμΈμ§ μλμ§ μ²΄ν¬νλ κ²μ΄ instanceof
}
μ΄λ€ νμ μ΄ λ€μ΄μλ λλ€μ μλ―Έ
public class Main {
public static void main(String[] args) {
print("μλ
");
print(1);
print(3L);
print(true);
}
public static <T> void print(T type){ //μ΄λ€ νμ
μ΄ λ€μ΄μλ λλ€μ μλ―Έ
System.out.println(type);
}
}
μ¬λ¬κ°μ§ μΌμ λμμ ν λ μ¬μ©
Runnableμ interfaceκ³ , runμ μΆμλ©μλ
public class Main {
public static void main(String[] args) {
System.out.println("1");
new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 5; i++){ try {
Thread.sleep(1000); //1μ΄νμ
System.out.println(Thread.currentThread().getName() +":" + i);
}
catch (InterruptedException e){
e.printStackTrace();
}
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 5; i++){ try {
Thread.sleep(1000); //1μ΄νμ
System.out.println(Thread.currentThread().getName() +":" + i);
}
catch (InterruptedException e){
e.printStackTrace();
}
}
}
}).start();
System.out.println("2");
}
}
κ²°κ³Όμ°½
μΆμλ©μλκ° 1κ°μ΄κ³ νλΌλ―Έν°κ° μμ λ μ¬μ© κ°λ₯
μμ μ€λ λμμ ctrl + shift + enterλ₯Ό λλ₯΄λ©΄ λ³κ²½κ°λ₯
new Thread(() -> {
for(int i = 0; i < 5; i++){ try {
Thread.sleep(1000); //1μ΄νμ
System.out.println(Thread.currentThread().getName() +":" + i);
}
catch (InterruptedException e){
e.printStackTrace();
}
}
}).start();
λ¬Έλ²λ μ€μνμ§λ§ νλ μμν¬μ μ΄μ©λλ₯Ό μλ©΄ λ¬Έλ²μ ν¬κ² κ³΅λΆ μν΄λ λ λ―ν λλ
https://wikidocs.net/281 : μ ν ν¬ μλ°