java

    ❌ 자바 캡슐화 : 아무나 접근 못하게 할테다

    🟣 캡슐화(encapsulation) 인스턴스의 변수에 추상화 목적에 맞는 유효한 값만 넣을 수 있도록 외부 접근을 제한하는 문법이다. 종류 범위 private 클래스 내부에서만 접근 가능 default 클래스 내부 + 같은 패키지 접근 가능 protected 클래스 내부 + 같은 패키지 + 서브 클래스 접근 가능 public 모두 접근 가능 🟣 캡슐화와 접근제한자 : 아무나 못 들어온다! ✔️ 한 클래스에서 다른 클래스에 접근 가능한지를 판별하기 위해서는 위의 접근제한자의 종류를 알 필요가 있다. ✔️ 서브 클래스에서 슈퍼 클래스로 접근할 때 슈퍼 클래스에서 지정한 접근 범위보다 같거나 넓어야한다. ✔️ 공통영역 private는 항상 같은 클래스 내에서만 접근 가능하기 때문에 다른 클래스에서 접근할 수..

    🎁 this, super 그리고 오버라이딩(Overriding) 개념잡자

    this vs super 🟣 필드에서의 this와 super 필드에서의 this과 super는 말 그대로 해당 레퍼런스가 가리키는 인스턴스의 클래스를 지칭한다. A4 obj = new A4(); obj.name // A 클래스의 name obj.tel // A3 클래스의 tel obj.age // A4 클래스의 age obj.print(); A4.print(): => this.name(A), super.name(A) => this.age(40), super.age(30) => this.tel(A3: 010-1111-2222), super.tel(A3: 010-1111-2222) => this.working(false), super.working(true) ---------------------------..

    ⭕ 자바 : 상속(Inheritance)과 다형성(polymorphism) 올것이 왔다!

    ⭕ 상속(Inheritance)과 다형성(Polymorphism) 🟣 이전 포스팅 ✔️ 상속에 대한 이전 포스팅을 참고하려면 아래 링크를 클릭해주세요 ⭕ 자바 : 상속(Inheritance)의 등장 🟣 객체지향(OOP)의 핵심 앞에서 객체지향 문법을 준비하기 위한 여러 문법을 배웠는데 이제부터 진정한 객체지향의 길로 접어들 것 같다는 생각이 든다. 알고보면 객체지향은 실생활과 매우 유사하다. 객체지향을 잘 이해한다는 것은 클래스를 어떻게 나눌 수 있냐가 핵심이라고 생각된다. 데이터 중심 클래스 vs 기능 중심 클래스(업무) 중 어떤 것에 중심이냐에 따라 클래스를 따로 짠다. 그리고 데이터를 추상화, 기능을 추상화한다. 실세계 => 데이터로 추상화한다. ✔️ 물리적 : 환자(Patient) , 제품(Pro..

    ⭕ 자바 : 상속(Inheritance)의 등장

    상속(Inheritance)은 왜 등장하게 되었을까? 상속이 등장하게 된 배경과 코드를 살펴보며 상속에 대해 간접 체험해 보는 것이 목적입니다. 먼저 상속이 등장하게 된 배경에 대해 알아볼까요? 1. 기존 코드에 새로운 내용을 추가한다면? 만약 프로그램을 유지보수하는 과정에서 기존 코드에 새로운 내용을 집어넣는다면 어떻게 될까? 여기에는 몇 가지 문제점들이 있는데 이에 대해서 알아보자. 📌 문제점 ✔️ 변경된 사항으로 기존 코드를 사용하는데 영향을 끼친다. 기존에 잘 되던 기능까지 동작이 안되는 문제가 발생한다면? 끔찍하다.. ✔️ 오류가 발생 할 가능성이 높다. ✔️ 코드가 누더기가 되어서 유지보수가 힘들다. 위와 같은 문제점들이 발견되면서 새로운 해결책이 필요해지게 되는데... 2. 기존 코드를 복제..

    ⛱️ 생성자(Constructor) 너는 누구니?

    도데체 생성자(Constructor)는 왜 쓸까? 생성자란 ? 인스턴스를 생성한 후 재대로 쓸 수 있도록 유효한 값으로 초기화 시키는 일을하는 메서드다. 인스턴스가 배열이 필요하다면 배열 주소를 넣어넣고 다른 인스턴스를 사용해야한다면 주소를 받아서 넣는 그런 일을한다. 변수를 쓰기전에 유효한 값으로 초기화를 시켜놔야하는 경우에 쓴다. 인스턴스 필드는 생성자의 첫 부분으로 들어간다. // Object()가 생성자이다 Object obj = new Object();지금까지 new 클래스명()으로만 알고 있었는데 이 부분이 생성자를 나타낸다는 것! 모든 클래스는 1개 이상의 생성자를 가지고 있다. 자바에서는 모든 클래스에 최소 1개 이상의 생성자가 있다. 생략되어 보이지 않을 뿐이다. 기본 생성자와 파라미터가..

    🎉 상수(constant)는 언제 사용하는 것일까?

    상수는 언제 사용할까? 다음 자바 코드는 각각의 멤버의 아이디와 패스워드 멤버의 종류를 나타내는 코드이다. 이를 통해 상수를 왜 사용해야하는지 알아봅시다! 상수로 나타내지 않을 때 문제점? 아래 코드에서 멤버의 종류를 숫자로 나타내면 어떤 불편함이 있을까? 1달뒤 코드를 본다면? 아니 하루 뒤에도 기억 못할 수 있다. (0은뭐지?, 1이뭐야?, 2는 뭐지?) 주석을 적어놓아도 매번 확인하기 귀찮다. 유효한 이름을 지어서 알아보기 쉽게 만들 필요가 있다. public class ConstantEx1 { static class Member { String id; String password; int type; // 0: 손님, 1: 회원, 2: 관리자 } public static void main(Strin..

    💉 의존 객체는 어떻게 사용하면 될까요?

    📌 의존 객체(dependency object)란? 작업을 수행하기 위해 사용하는 객체다. 작업할 때 의존하는 객체라고 해서 의존 객체 라 부른다. 일시적인 의존 관계(dependency) 특정 메서드에서만 사용되는 경우 보통 파라미터나 로컬 변수로 사용한다. 지속적인 의존 관계(association) 여러 메서드에서 사용되는 경우 보통 인스턴스 필드로 사용한다. 📌 의존 객체를 사용하면 좋은 이유? STEP1. 파라미터로 주소를 넘겨주다. 현재상황 App.java (main)에서 ProjectHandler.java를 실행시킬 때 반드시 MemberHandler.java의 exist() 메서드가 필요 add(), update()에서 exist()메서드를 필요로 하기에 파라미터로 주소를 넘겨줌. publi..

    📎 JVM과 가비지 컬렉터(garbage collector)

    가비지 컬렉터(garbage collector) 힙 메모리에 존재하는 가비지를 찾아 제거하는 일을 한다. 다른 용도로 사용할 수 있도록 메모리를 해제하는 일을 한다. [1번] public class GarbageEx1 { public static void main(String[] args) { Score s1 = new Score(); Score s2 = s1; } } [2번] public class GarbageEx2 { public static void main(String[] args) { Score s1; s1 = new Score(); s1 = new Score(); } } [3번] public class GarbageEx3 { public static void main(String[] args..