| 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 : ์ ํ ํฌ ์๋ฐ
 (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png)
 (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png)
 (1) (1).png)