본문 바로가기
728x90

야미스터디/Java21

[Java] 인터페이스와 추상클래스 📌 🤚 들어가기 전에! 추상 : 여러가지 사물이나 개념에 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용 추상화 : 클래스 간의 공통점을 찾아내서 공통의 부모를 설계하는 작업 구체화 : 상속을 통해 클래스를 설계, 확장하는 작업 추상 메서드 (abstract method) // 일반 메서드 public void testMethod() { // 선언부 ... // 구현부 ... } 메서드(method)는 선언부와 구현부로 구성되어 있다 public void abstractMethod(); // 추상메서드 이 때 추상 메서드란 선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 것이다 실제 내용은 상속받는 클래스에서 구현하도록 비워둔 것이다 따라서 추상 메서드는 상속 받는 클래스에 따라 달라질 수 있다 .. 2022. 8. 18.
[Java] 오버라이딩 vs 오버로딩 📌 Java에서 다형성을 지원하는 방법으로는 메서드 오버로딩과 오버라이딩이 있다 오버로딩(Overloading) 메서드 오버로딩과 생성자 오버로딩이 있는데, 이들은 실제로 적용되는 것은 동일하다 메서드의 이름은 같고 매개변수의 갯수나 타입이 다른 함수를 정의하는 것 리턴값만 다르게 갖는 오버로딩은 작성할 수 없다 기존에 없던 새로운 메서드를 정의하는 것 오버로딩 조건 1. 매개변수의 개수가 달라야 한다 // 매개변수 개수가 다른 경우 public int overloadTest() { return 0; } public int overloadTest(String test) { return 1; } 2. 매개변수의 타입이 달라야 한다 // 매개변수 타입이 다른 경우 public int overloadTest(St.. 2022. 8. 17.
[Java] Mutable vs Immutable 📌 자바의 객체는 기본적으로 Heap 영역에 할당되고 Stack 영역에 참조값을 갖는 참조 타입 변수를 통해 데이터에 접근한다 이러한 객체는 Mutable(가변) 객체와 Immutable(불변) 객체로 나뉜다 ❌ Immutable Object (불변 객체) 불변 객체란 데이터 변경이 불가능한 객체를 말한다 단순히 생각하면 final 키워드처럼 초기화 이후 값을 변경할 수 없다고 생각할 수 있다 하지만 불변 객체는 객체의 데이터 수정이 아예 불가능한 것이 아니라 Heap 영역에 저장된 값을 수정할 수 없는 것이다 불변 객체의 종류로는 String, Boolean, Integer, Float, Long, Double 등이 있다 이는 String 타입을 제외하고는 원시(primitive) 타입의 래퍼 타입이다 불.. 2022. 8. 7.
[Java] 접근 제한자 / 생성자 / SOLID 📌 🤚 접근 제한자 (Access Modifier) 클래스의 멤버들은 객체 자신들만의 속성이자 특징이기 때문에 대외적으로 공개되는 것이 결코 좋은 것은 아니다 따라서 프로그래머는 접근 제한자를 통해 객체의 멤버들에게 접근을 제한할 수 있다 접근 제한자 종류 1. public package, class가 동일하지 않아도 모든 접근이 가능한 제한자 같은 클래스, 같은 패키지, 다른 패키지의 다른 클래스 내에서 허용 2. protected 같은 package에서만 접근을 허용하고 다른 package에서 접근하려면 해당 class를 상속받을 시에만 접근이 가능한 제한자 같은 class에서 접근 허용 같은 package의 다른 class에서 접근 허용 다른 package의 상속받은 class에서 접근 허용 다른 pa.. 2022. 8. 6.
[JAVA] static 변수 static 메모리 일반적으로 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap 영역에 생성된다 객체의 생성 시에 할당된 Heap 영역의 메모리는 Garbage Collector를 통해 수시로 관리를 받는다 Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점이 있지만, Garbage Collector의 관리 영역 밖에 존재하므로 Static을 자주 사용하면 프로그램의 종료시까지 메모리가 할당된 채로 존재하기 때문에 성능이 저하된다 static 변수(정적 변수) 란? 자바 언어 예약어로 클래스 메서드와 클래스 필드를 지정할 때 사용한다 인스턴스(객체)를 생성하지 않아도 클래스의 메서드와 필드에 접근을 가능하게 한다 메모리에.. 2022. 7. 26.
[Java] 객체지향 vs 절차지향 📌 절차 지향 (Procedual Programming) 물이 위에서 아래로 흐르듯이, 순차적인 처리가 중요시되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법 절차 지향도 제어문을 사용하면 실행 순서를 바꿀 수는 있지만, 이조차도 제어문의 절차로 진행되는 것이다 대표 언어 : C, ALGOL, COBOL, FORTRAN 등 절차 지향의 장점 이는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되어 시간적으로 유리하다 절차 지향의 단점 유지보수 및 디버깅이 어렵다 실행 순서가 정해져 있기 때문에 코드의 순서가 바뀌면 동일한 결과를 보장하기 어렵다 프로그램 분석 및 코드 수정이 어렵다 객체 지향 (Object Oriented Programming) 실.. 2022. 7. 22.
728x90