[JAVA] 9

추상 클래스 (abstract , interface)

abstract 자손 클래스에서 반드시 재정의해서 사용되기 때문에 조상의 구현이 무의미한 메서드 메서드의 선언부만 남기고 구현부는 세미콜론(;)으로 다체 선언부에 abstract추가 클래스 선언부에도 abstract추가 글래스에 구현부가 없는 메서드가 있으므로 객체를 생성할 수 없음 abstract를 사용함으로써 자손 클래스에서 재정의 강제 인터페티스 최고 수준의 추상화 : 일반 메서드는 모두 abstract 형태 클래스와 다른 점은 인터페이스는 다중 상속이 가능 인터페이스의 필요성 구현의 강제로 표준화 처리 인터페이스를 통한 간접적인 클래스 사용으로 손쉬운 모듈 교체 지원 사로 상속의 관계가 없는 클래스들에게 인터페이스를 통한 관계 부여로 다형성 확장 모듈 간 독립적 프로그래밍 가능 ----> 개발 기..

[JAVA] 2023.01.21

Polymorphism

다향성이란 ? 하나의 객체가 많은 형을 가질 수 있는 성질 상속 관계에 있을 때 조상 클래스의 타입으로 자식 클래스 객체를 레퍼런스 할 수 있다. 조상 타입으로 자식객체 받기 가능 ( 교수님 피셜....:부자되세요!!!) 작은 집에서 큰 집 -> 묵시적 캐스팅 큰 집에서 작은 집 -> 명시적 캐스팅(생략 불가) 정적 바인딩 컴파일 단계에서 참조 변수의 타입에 따라 연결이 달라짐 상속 관계에서 객체의 멤버 변수가 중복 될 때 또는 static method 동적 바인딩 다형성을 이용하여 메서드 호출이 발생할 때 런타임에 메모리의 실제 객체의 타입으로 결정 상속 관계에서 객체의 메소드가 재정의 되었을 때 마지막에 재정의된 자식 클래스의 메서드가 호출됨 JAVA API처럼 공통 기능인 경우 OBJECT를 파라미..

[JAVA] 2023.01.21

Inheritance + @

상속이란 ? 기존 클래스의 멤버를 자식 클래스에서 재사용하기 위한 것 코드의 절감과 유지보수의 장점이 있음 자바는 단일 상속만 지원 메서드 오버라이딩 조상 클래스에 정의된 메서드를 자식 클래스에서 적합하게 수정하는 것 조건 ★중 메서드 이름이 같아야 한다 매개 변수의 개수, 타입, 순서가 같아야 한다 리턴 타입이 같아야 한다 접근 제한자는 부모보다 범위가 넓거나 같아야 한다(부모랑 달라도 되긴 함 ) 조상보다 더 큰 예외를 던질 수 없다. super super를 통해 조상 클래스의 멤버에 접근 가능하다 super()를 통해 조상클래스의 생성자를 호출가능하다 생성자 첫줄에만 this() 또는 super()가 올 수 있다. 명시적으로는 this()또는 super()를 호출하지 않는 경우 컴파일러가 super..

[JAVA] 2023.01.21

Abstraction + @ (추상화와 그 외의 중요한 것들)

객체지향 프로그래밍이란 ? 주변의 많은 것들을 객체화하여 프로그래밍 하는 것 객체란 주체가 활용하는 것 블록 형태의 모듈화된 프로그래밍이 가능하여 신뢰, 수정용이, 재사용성이 높은 장점이 있따. 클래스란 ? 객체를 정의해 놓은 것 (객체의 설계도) 객체를 만들기 위한 툴임 객체란 ? 클래스를 데이터 타입으로 메모리에 생성된 것 JVM의 메모리 구조 1. class area(클래스 원형 로딩) 2. method stack 메소드들의 실행공간, 스레드 별로 관리 stack이라 순서대로 쌓임 3. heap 객체를 저장 스레드에 의해 공유 생성된 객체는 프로그래머가 삭제할 수 없음 (가비지 컬랙터가 추후 삭제함) 선언 위치에 따른 변수의 분류 멤버 변수 클래스 멤버변수 (static int) 클래스 영역에 st..

[JAVA] 2023.01.17

NullPointerException

자바로 프로그램을 만들다 보면 NullPointerException을 보게 되는 경우가 있다. 나도 그중 하나이다.... 보통 예외같은 경우는 자바 공식 문서에 잘 설명되어있다. https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/NullPointerException.html#%3Cinit%3E() NullPointerException (Java SE 11 & JDK 11 ) docs.oracle.com 5가지 경우가 있다. Thrown when an application attempts to use null in a case where an object is required. These include: Calling the in..

[JAVA] 2022.12.22

JAVA EOF (scanner + buffered reader)

EOF란 end of file 더이상 입력 값이 없을 떄 콘솔을 종료하라는 의미이다. java에서 eof는 스캐너와 버퍼리더로 처리할 수있다. 스캐너의 장점은 쉽게 코딩할 수 있는 것이지만 메모리를 너무 많이 차지한다. 버퍼리더는 어렵지만 메모리를 많이 사용하지 않는다. 우선 scanner를 활용한 eof를 알아보자! import java.util.Scanner; public class eofPractice { public static void main(String[] args) { Scanner ss = new Scanner(System.in); while(ss.hasNextInt()) { System.out.println(ss.nextInt()); } } } hasNextInt란 입력받은 수가 정수면..

[JAVA] 2022.11.02

자바 쓰레드 synchronized

synchronized는 쓰레드를 동시에 사용할 때 동시에 임계영역에 들어오지 못하도록 할 수 있다. 1. wait() - 쓰레드 기다려! 2. notify() / notifyAll() - 쓰레드 가자! 일어나! 산책가자 예제) 생산자와 소비자 생산자 쓰레드가 데이터를 저장한 후 소비자 쓰레드가 데이터를 꺼낼 수 있다 , 생산자 쓰레드는 소비자 쓰레드가 버퍼에서 데이터를 가져가지 않았으면 데이터를 버퍼에 저장할 수 없고 wait() 풀이 1. 생산자 쓰레드와 소비자 쓰레드를 공동 저장할 수 있는 버퍼를 제작하자 Buffer.java public class Buffer { int data = 0; boolean available = false; public synchronized int get() { //..

[JAVA] 2022.10.31