no image
[JAVA] Java IO 1편
☕ IO란 - Input & Output - 입출력 - 입력은 키보드. 네트워크, 파일 등으로 부터 받을 수 있다 - 출력은 화면, 네트워크 ,파일 등에 할 수 있다. ☕ Java IO도 객체다 - Java IO에서 사용되는 객체는 자바 세상에서 사용되는 객체이다 - Java IO가 제공하는 객체는 어떤 대상으로 부터 읽어들여, 어떤 대상에게 쓰는 일을 한다. ☕ Java IO는 조립되어 사용되도록 만들어졌다 - Decotator 패턴으로 만들어졌다 ☕ 주인공과 장식을 구분할 수 있어야한다 - 장식은 InputStream, OutputStream, Reader, Writer(-> 추상클래스, Component)를 생성자에게 받아들인다 - 주인공은 어떤 대상에게서 읽어들일지, 쓸지를 결정한다 - 주인공은 ..
2023.04.07
no image
[JAVA] 익명클래스와 처음 만나는 람다
☕ 이름 없는 클래스 - new 생성자(){ .... } - 생성자 뒤에 중괄호가 나오고 코드를 오버라이딩 하여 구현한다. Car car = new Car(){ public void run(){ System.out.println("Car를 상속받는 이름없는 객체가 run 메소드를 오버라이딩함"); } } package com.example; public class MyRunnableMain { public static void main(String[] args) { MyRunnable r = new MyRunnable() { @Override public void run() { System.out.println("myrunnable run!!!"); } }; r.run(); } } ☕ 람다(Lambda)..
2023.04.06
no image
[JAVA] 팩토리 메소드 패턴과 Java Reflection
☕ 팩토리 메소드 패턴 - 공장이 하는 일은? - 복잡한 생상 과정을 숨기고, 완성된 인스턴스만 반환된다. ☕ 클래스 로더를 이용한 인스턴스 생성하기 Class clazz = Class.forName("클래스 풀네임"); Object obj = clazz.newInstance(); ☕ 클래스 로더 예제 package com.example; import java.lang.reflect.Method; public class ClassLoderMain { public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException { // Bus b1 = new Bus(); //..
2023.04.05
no image
[JAVA] 인스터스페이스 2편 - default 메소드가 필요한 이유
☕ 인터페이스 작성 문법 - "인터페이스이름"은 Upper CamelCase로 작성된다 - interface도 확장자가 .java파일로 작성한다 - 인터페이스의 모든 필드는 public static final이어야 하며, 모든 메소드는 public abstract이어야한다. (JAVA 7)까지는 final, abstract를 생략하면 자동으로 붙는다 - Java8부터는 디폴드 메서드와 정적 메소드도 선언 가능하다 ☕ 인터스페이스의 default method (JDK 8에 추가된 메소드) - A라는 사용자가 메소드가 3개 선언된 inteface를 작성한 후 외부에 공개하였다. (라이브러리로 제공) - 여러 사용자들이 해당 인터스페이스를 이용해 구현하였다. - A라는 사용자는 인터스페이스에 1개의 메소드가 ..
2023.04.05
no image
[JAVA] 인터페이스 & 로또 번호 생성기 만들기
☕ 인터스페이스 - "무슨 기능을 만들어야할까?" VS "구현부터 하기" - 어떤 기능을 만들어야 할 지 부터 고민한다. 만들어야 할 기능들을 관련 된 것끼리 묶은 후 이름을 지어준다 ☕ 인터페이스 작성 문법 -> 만들어야하는 기능을 선언한다 - "인터페이스이름"은 Upper CamelCase로 작성된다 - interface도 확장자가 .java파일로 작성한다 - 인터페이스의 모든 필드는 public static final이어야 하며, 모든 메소드는 public abstract이어야한다. (JAVA 7)까지는 final, abstract를 생략하면 자동으로 붙는다 - Java8부터는 디폴드 메서드와 정적 메소드도 선언 가능하다 [public] interface 인터페이스 이름 {...} // 예시 pub..
2023.04.05
no image
[java] final 클래스, 불변객체 String
☕ 부모가 될 수 없는 클래스 - 상속을 금지 시키려면 클래스를 정의할 때 final 키워드를 사용한다 - public final class 클래스명 {....} ☕ 실습 예제 StringExam.java -> 같은 것을 참조하느냐. package com.example; public class StringExam { public static void main(String[] args) { String str1 = "hello"; String str2 = "hello"; String str3 = new String("hello"); String str4 = new String("hello"); if(str1 == str2) System.out.println("str1 == str2"); if (str1 =..
2023.03.30
no image
[java] 템플릿 메소드 패턴으로 배우는 추상클래스
☕ 실습 예제 Controller.java package com.example.fw;/* Controller의 종류가 여러개더라 초기화 - 같은 코드 실행 - 다른 코드 마무리 - 같은 코드 */ public abstract class Controller { public void init(){ System.out.println("초기화 하는 코드"); } public void close(){ System.out.println("마무리 하는 코드"); } // 내가 가지고 있는 메소드를 호출한다 // 어떤 순서를 가지고 있다. 이런 메소드를 템플릿 메소드라고 한다. public abstract void run(); // 매번 다른 코드 public void execute(){ this.init(); // ..
2023.03.30
no image
[java] 추상 클래스
☕ 추상 클래스 - 추상 클래스는 인스턴스가 될 수 없다 - 추상 클래스를 상속 받는 자손이 인스턴스가 된다 - abstract 키워드를 사용하여 클래스를 정의한다 - 추상 클래스는 보통 1개 이상의 추상 메소드를 가진다 (추상 메소드가 없어도 오류가 발생하지는 않는다) - public abstract class 클래스명 {.....}
2023.03.30
no image
[java] 생성자
☕ 생성자 - 인스턴스를 생성할 때 사용한다 - 어떤 값을 가지고 인스턴스가 만들어지게 하고 싶다면 생성자를 사용한다 - 클래스 작성시 생성자를 하나도 만들지 않았다면 자동으로 기본 생성자가 생성된다 - 기본 생성자는 매개변수를 하나도 받지 않는 생성자를 말한다. ☕ 생성자 오버로딩 - 생성자는 매개변수의 개수가 다르거나, 타입이 다르다면 여러개 가질 수 있다. ☕ 생성자 실습 예제 User.java public class User { private String email; private String password; private String name; // 생성자를 하나라도 만들게 되면 기본 생성자가 자동으로 안만들어진다 public User(String email, String name) { thi..
2023.03.30