백엔드/JAVA_이론공부 35

JAVA_캡슐화, 패키지, import

캡슐화 캡슐화란 특정 객체 안에 관련된 속성, 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는것을 말한다. 캡슐화의 목적은 데이터 보호, 네부적으로 사용되는 데이터에 대한 불필요한 외부 노출 방지이다. 캡슐화된 객체는 정보 은닉의 장점이 있다. 캡슐화의 예시, 변수와 메서드가 클래스 안에서 일부분 가려져 있다. (출처 : 코드스테이츠) 앞서 "불필요한 외부 노출 방지"라는 표현을 썻는데, 캡슐화된 객체를 사용 할 때, 접근제어자(Access Modifier)와 getter와 setter 메서드가 필요한 특징이 있다. 패키지 패키지는 특정한 목적을 공유하는 클래스와 인터페이스의 묶음이다. 클래스가 속성, 기능을 묶어 데이터를 관리한다면, 패키지는 클래스들을 묶어 관리하는 것이다. 쉽게 말해서 우리..

JAVA_super, super()

super, super() super, super()는 이전에 설명한 this,this()와 맥락이 비슷하다. this는 자기 객체를 가리키는 참조 변수명으로, 메서드 내의 맴버변수와 지역변수 이름이 같을때 구분하기 위한 용도로 사용된다. (작성 생략 시 컴파일러가 알아서 만들어줌) this()는 같은 클래스 내의 다른 생성자를 호출할 때 사용되며, 생성자 내에서만 사용 가는하며, 항상 첫 줄에 위치해야한다. super, super()도 이와 비슷하다. super super는 상위 클래스의 객체를 호출한다. this처럼 객체를 호출하는것과 비슷한 맥락이다. 코드예시 public class Super { public static void main(String[] args) { Lower l = new Lo..

JAVA_메서드 오버라이딩

메서드 오버라이딩 이전에 설명한 오버로딩과는 전혀 다른 개념이다. 오버로딩은 같은 이름을 가진 여러게의 메서드가 들어오는 변수에 따라 다르게 작동되는 것을 의미 하면, 오버라이딩은 같은 이름을 가진 메서드가 서로 다른 클래스 안에 있는 경우, 사용되는 클래스 안의 메서드로 덮어 써진다. 또 뭔말이냐고? 코드를 보면서 설명하면 쉽다. 코드예시 class Vehicle { void run() { System.out.println("Vehicle is running"); } } public class Bike extends Vehicle { // Vehicle 클래스 상속 void run() { System.out.println("Bike is running"); // 메서드 오버라이딩 } public sta..

JAVA_상속

상속 상속이란 기존의 클래스를 재활용 해서 새로운 클래스를 만드는 것이다. 우리가 숱하게 클래스니, 생성자니 하면서 클래스를 잔뜩 만들면서 자바를 공부 했는데, 종종 "이거 다 일일히 써야되나?" 했을거다. 적어도 유사한 기능, 같은 변수 등등을 가진 클래스들은 복붙 말고 더 간편한게 있지 않을까? 그래서 상속이 나왔다. 상속은 기준이 되는 클래스(상위 클래스)의 맴버를 상속받는 클래스(하위 클래스)와 공유하는것을 의미한다. 클래스 상속의 예시, Person 클래스를 상속받은 하위클래스들 (출처 : 코드스테이츠) 위의 그림에서 볼 수 있듯이, 밑의 하위 클래스는 상위 클래스 Person의 맴버(이름, 나이, 배움, 걷기, 먹기) 를 그대로 가져온 상태다. 여기서, 프로그래머는 회사이름, 코딩을 추가한 상..

JAVA_내부 클래스

내부 클래스 내부클래스는 단순하게, 클래스 안에 클래스를 선언 한것이다. 뭔가 복잡하게 생각 할 수 있는데, 사실 클래스가 메서드, 변수를 담아놓고 객체를 만드는 것인데, 얘도 그런거라고 생각하면 된다. 사실 우리가 자바 프로그래밍을 할 때 맨 위에 알아서 public class (클래스명(파일명)) 이캐캐 나오는대, 사실 우리는 계속 이너클래스를 쓰고 있었는데 그냥 몰랏다 이렇게 생각하면 쉽게 받아들일 수 있다. 작성예시 class Outer { // 외부 클래스 class Inner { // 인스턴스 내부 클래스 } static class StaticInner { // 정적 내부 클래스 } void run() { class LocalInner { // 지역 내부 클래스 } } } 위에서 보다싶이, 클..

JAVA_this(), this

this(), this this() 클래스 안의 메서드들끼리 서로 호출할 수 있듯이, 생성자도 서로 호출이 가능하다. 이때 사용하는 메서드가 this()이다. 생성자를 서로 호출한다는게 감이 안올 수도 있다. 코드로 먼저 보고 설명을 듣는게 좋다. public class sengsungEX { public static void main(String[] args) { Sengsung sengsung1 = new Sengsung(); Sengsung sengsung2 = new Sengsung("chicken"); } } class Sengsung { public Sengsung() { // (1) 생성자 오버로딩 System.out.println("1번 생성자"); } public Sengsung(Stri..

JAVA_생성자

생성자 생성자는 클래스에서 객체를 찍어내주는 요소이다. 인스턴스(클래스에서 찍어낸 변수, 메서드)를 초기화 하는 메서드 이다. 우리가 코딩을 할 때 변수 앞에 new를 넣어서 새로운 변수를 만들어 내곤 했는데, 사실 이 new을 사용해서 객체를 생성할 때 "호출되는 것이 생성자" 이다. (new가 생성자라는 말이 아니다, new를 작동시킬때 같이 오는게 생성자다!) new 는 인스턴스 생성을 담당하고, 생성자는 인스턴스 변수들을 초기화 한다. 생성자는 메서드와 비슷한 구조를 가지고 있으나, 두 가지 차이점이 존재한다. 생성자의 이름른 반드시 클래스의 이름과 같아야 한다. 생성자는 리턴타입이 없다. (리턴타입 자체가 없음) 작성 예시 클래스명(매개변수) { // 생성자 기본 구조 //생성자 내의 내용 } ..

JAVA_메서드 오버로딩(overloading)

메서드 오버로딩 메서드 오버로딩은 동인한 메서드 시그니처를 사용하는 여러개의 메서드 이다. 이게 뭔말이냐고? 메서드 이름만 같고, 하는일은 다르다 이거다. 비유하면 이렇다. 요즘 편의점에서는 아르바이트생이 뭐 물건 파는것 뿐만 아니라 닭도 튀기고, 삐짜도 굽고 아주 뭘 싹다 한다. 그런데 이 동네 사람들은 좀 버르장머리가 없어서 아르바이트 하는 김철수 씨를 "야! 알바야!"라고 부른다고 치자 그리고 또또 싹바가지가 없어서 뭘 요구 할때 "야! 알바야!" 하고 요구하는것을 손가락으로 가르킨다고 하자. 손놈이 담배를 가르키면서 야!알바야! 하면 담배를 가져다 주고, 피자 6900원 포스터를 가르키면서 하면 삐짜를 구워주는거다. 이렇게 오버로딩이 완성된다. 뭔말이냐고? 하는일은 다 다른일인데, 호출하는 알바생..

JAVA_필드와 메서드

필드 필드는 클래스 안의 변수를 말한다. 예시 class Example { // => 클래스 영역 int instanceVariable; // 인스턴스 변수 static int classVariable; // 클래스 변수(static 변수, 공유변수) void method() { // => 메서드 영역 int localVariable = 0; // 지역 변수. {}블록 안에서만 유효 } } 위에서 instanceVariable는 인스턴스 변수로 힙 메모리에 저장된다 -> 객체가 가져다가 쓰는 데이터, 객체가 생성될 때마다 새로운공간에 저장됨 classVariable변수는 클래스 변수로, 한번 바뀌면 그 값을 계속 유지한다. 그래서 다른 객체를 만들기 전에 값이 바뀌면 바뀐 상태로 적용되서 객체가 생성된다..

JAVA_클래스와 객체

클래스와 객체 종종 프로그래밍언어 특징을 말할때 "요놈은 객체지향 프로그래밍 언어로....~~" 라고 하는 것을 종종 볼 수 있다. 일단 객체가 뭔가? 객체는 구분할 수 있는 모든 것들을 말한다. TV, 카메라, 라디오, 고려은단 깡통, 순이네 국밥 간판... 이 모든것이 객체인 것이다. 심지어 우리 머릿속에 있는 개념이나 생각 까지도 객체인 것이다. 프로그래밍 언어는 크게 객체지향과 절차지향 언어가 있는데, 우리는 객체지향 언어인 JAVA를 공부하니, 객체지향만 설명 하겠다. 우리가 사용하는 JAVA에서 객체라면 변수, 메서드 등등등... 데이터들이 객체가 된다. 이 객체들을 얼기설기 엮어서 프로그램을 만드는 것이다. 여기서 클래스는 객체를 만드는 것이고, 클래스로 만들어진 것은 객체인것이다. 1. 클..