분류 전체보기

객체지향에서 상속이라는 개념은 매우 중요한 개념이다. 상속 : 부모(상속을 해주는) 클래스가 가지고 있는 멤버 변수와 메서드를 자식(상속을 받는) 클래스에서 그대로 사용하기 위함. 상속 받은 자식의 인스턴스를 생성하면 부모의 인스턴스도 함께 생성된다. 즉 하나의 참조값을 가리키지만, 실제로 안에는 2개의 클래스 정보가 있다. 만약에 charge()라는 메서드를 부른다고 가정해보자. 상속 관계는 부모와 자식이 모두 존재한다. 즉 부모를 통해 charge()를 찾을지, 자식을 통해서 charge()를 찾을지 정해야하는데 그건 부르는 인스턴스의 클래스로 결정이 된다.(자식으로 부르면 자식으로 찾음) 그런데 만약에 자식에 charge()라는 메서드가 없으면? 그때는 부모에서 확인한다. 만약에 부모에도 없으면 컴..
Final을 변수 앞에 붙이면 단 한 번만 값 할당이 가능하고 이후부터는 수정이 불가능해진다. 그런데 만약에 초기화를 진행할 때 Final로 계속 생성한다면? public class Car { private final int pk = 0; private String name; public Car(String name) { this.name = name; } public int getPk() { return pk; } public String getName() { return name; } } Car 클래스를 만들고 final pk를 가지는 인스턴스를 3개 만들어보고 출력해보자. public class Main { public static void main(String[] args) { Car k3 = n..
자바의 메모리 구조는 크게 3개로 구분된다. 1. 메서드 영역 : 클래스 정보를 보관. 2. 스택 영역 : 실제 프로그램이 실행되는 영역. 메서드를 실행할 때마다 하나씩 쌓인다. 3. 힙 영역 : 객체(인스턴스)가 생성되는 영역. new를 사용하면 힙 영역에 생성된다. 배열도 힙 영역에 생성 조금 더 자세하게 살펴보자. 메서드 영역 프로그램을 실행하는데 필요한 공통 데이터를 관리한다.(클래스, 메서드) 클래스 정보 : 클래스에 실행 코드(바이트), 필드, 메서드와 생성자 등 모든 실행 코드가 존재. static 영역 : static 변수들을 보관한다. 런타임 상수 풀 : 프로그램을 실행하는데 필요한 공통 리터럴 상수를 보관한다. 스택 영역 자바를 실행하면 쓰레드별로 하나의 스택이 생성된다. 각 스택 프레..
내가 몰랐던 내용을 위주로 정리해야겠다. 클래스를 만들고 생성자를 만들지 않으면 기본 생성자는 원래 만들어진다. 근데 다른 생성자를 만들어놓으면 기본 생성자를 만들어줘야한다!!!(왜 몰랐을까 이걸) this()는 생성자 코드의 첫 줄에만 가능하다. public Account(int balance, String name) { System.out.println(123); this(1244, name); } 이렇게 this()를 처음에 안 쓰면 컴파일 에러가 발생한다.
기본형(Primitive Type) 기본형은 실제 값을 변수에 그대로 담을 수 있다. 변수에 담겨있는 값을 그대로 계산에 사용 가능. (ex int, long, boolean, double) 참조형(Reference Type) 참조형은 실제 값을 참조하고 있는 주소를 변수에 담는다. (ex 클래스, 배열) 그런데 여기서 새로 깨달은 사실이 있다. 대원칙 : 자바는 항상 변수의 값을 복사해서 대입한다. 즉 int a = 10; int b = a; System.out.println(a); System.out.println(b); a = 30; System.out.println(a); System.out.println(b); 이렇게 코드를 구성하면 결과로 이렇게 나온다. 사실 어떻게 보면 그냥 맞출 수 있는 ..
간단하게 Student라는 클래스를 만들어보자. class Student{ private String name; private int age; private int score; public Student(String name, int age, int score) { this.name = name; this.age = age; this.score = score; } public String getName() { return name; } public int getAge() { return age; } public int getScore() { return score; } } 이름, 나이, 점수를 가지는 학생 클래스를 만들어놨다. 이제 이 클래스를 이용해서 학생이라는 객체(인스턴스)를 만들어보자. publi..
· 싸피
💾프로젝트 회고 처음으로 기술 도메인을 정해서 진행했던 프로젝트였다. 나는 데이터에 관심이 많아서 빅데이터를 선택했었다. 근데 사실 생각과는 많이 다른 프로젝트였다. 빅데이터를 다룬다는 기대감에 진행했지만 hadoop이나 카프카를 공부해야 했고, 우리 팀에는 석사출신 빅데이터 다뤘던 팀원이 있어서 그 분이 데이터를 전담하게 되었다. 그래서 나는 따로 데이터 처리는 경험하지 못했고 단순 백엔드 포지션을 담당하게 되었다. 그래도 공통 때 깔끔하지 못했던 컨트롤러 로직, 여러 개의 기능을 담당했던 하나의 서비스 등등 많이 더러웠던 코드를 깔끔하게 바꾸려고 노력했다. 기획 빅데이터 프로젝트라서 기획이 정말 어려웠다. 일단 기술 도메인이 빅데이터인 만큼 큰 데이터를 다루는 프로젝트여야했고, 이걸 시각적으로 보여주..
· 싸피
💾프로젝트 회고 싸피에서 진행했던 4번의 프로젝트 중 가장 힘들었던 프로젝트였다. 원래는 백엔드 포지션으로 들어갔지만, 갤럭시 워치를 사용하는 아이디어가 나오게 되었고 누군가는 워치 어플을 담당해야 했다. 프론트는 3명으로 고정이었고 백엔드에서 워치 담당자가 필요했는데 새로운 도전을 해보고싶었기에 내가 담당하게 되었다. 결과는 나름 성공적으로 마무리 되었다. 그러나 지금 돌이켜보면 아쉬웠던 점이 안드로이드 구조를 잡는 데 오래 걸렸다는 점이 아쉬웠다. 그리고 프론트가 리액트 네이티브가 아니라 같은 안드로이드였으면 더 다양한 기능을 추가해볼 수 있을 것 같다는 생각도 들었다. 하지만 이번 프로젝트를 통해 증명해냈다고 생각한다. 새로운 기술에 빠르게 적응하고 나름 성공적인 결과를 도출할 수 있다는 것. 이거..
indeep
'분류 전체보기' 카테고리의 글 목록 (15 Page)