본문 바로가기

Java95

[Java]타입 변환과 다형성 다형성 여러 가지 형태를 가질 수 있는 능력, 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램 적으로 구현. 부모클래스 타입의 참조변수로 자식클래스의 인스턴스를 참조할 수 있도록 한다. ex)타이어 사용법은 모두 같지만 자동차에 어떤 타이어(객체)를 사용하느냐에 따라 성능이 달라짐. 다형성을 구현하려면 메소드 재정의와 타입 변환이 필요 메소드 재정의 + 타입변환 => 다형성 자동 타입 변환 다른 타입으로 변환하는 행위 클래스도 마찬가지로 타입 변환이 있는데, 클래스의 변환은 상속관계에 있는 클래스 사이에서 발생 자식은 부모타입으로 자동 타입 변환이 가능 B b = new B(); C c = new C(); D d = new D(); E e = new E(); A a1.. 2022. 11. 30.
[Java] 상속 상속 이미 잘 개발된 클래스를 재사용해서 중복되는 코드를 줄여준다. 상속을 하더라도 자식 클래스가 부모의 모든 것들을 물려받는 것은 아니다. 부모 클래스의 private 접근 제한을 갖는 필드 및 메소드는 자식이 물려받을 수 없다. 부모와 자식 클래스가 서로 다른 패키지에 있다면, 부모의 default 접근 제한을 갖는 필드 및 메소드도 자식이 물려받을 수 없다. (default 접근 제한은 ‘같은 패키지에 있는 클래스’만 접근이 가능하게끔 하는 접근 제한자이기 때문) 그 이외의 경우는 모두 상속의 대상이 된다. //상위클래스 public class A{ int field1; void method1() { . . .} } //하위클래스 public class B extends A{// extends A .. 2022. 11. 30.
객체 지향 3요소 5원칙 3요소 캡슐화(Encapsulation) = 정보 은닉 프로그램 내에서 같은 기능을 목적으로 작성된 코드를 모아서 다른 곳(클래스)에서 안보이게 숨기는 것. 클래스 내에서 사용할 속성은 숨기고(Private), 객체가 수행할 기능은 공개(Public)하는 것을 의미한다. 상속(Inheritance) = 재사용 + 확장 클래스 사이에 부모와 자식 클래스가 존재할 수 있다는 뜻. 자식 클래스는 상속받은 부모 클래스의 속성 및 기능을 사용할 수 있다. 다형성(Polymorphism) = 사용편의 하나의 객체가 여러 가지 형태를 가질 수 있는 것. 오버라이딩(Overriding) 부모 클래스에 정의되어 있는 메서드를 자식클래스에서 재정의하여 사용하는 것. 오버로딩(Overloading) 같은 이름을 가진 메서드.. 2022. 11. 29.
[Spring]Controller, Repository, Service 1.Controller 스프링 프레임워크의 컨트롤러는 사용자가 화면(View) 단에서 입력이나 이벤트를 했을 경우, 그 이벤트에 맞는 화면이나 비지니스 로직(MODEL)을 실행할 수 있도록 업데이트를 해주도록 하는 역할 즉 요청이 진입하는 지점이며, 요청에 따라 어떤 처리를 할지 결정 단 컨트롤러는 단지 결정만 해주고 실질적인 처리는 Service에서 담당 사용자에게 View를 응답으로 보내준다. 2.Repository 직역하면 저장소. 데이터베이스와 연관이 있다. 데이터단에 직접 매칭되는 Entity를 통해 데이터 테이블이 생성되면 받아온 정보를 데이터베이스에 저장하고 조회하는 기능을 수행 JPA에서 인터페이스를 생성 후 JpaRepository을 상속받으면 기본적인 CRUD가 자동생성 3. Servi.. 2022. 11. 29.
[프로그래머스/알고리즘] 두 개 뽑아서 더하기 (자바/Java) 문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 입출력 예 #1 2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.) 3 = 2 + 1 입니다. 4 = 1 + 3 입니다. 5 = 1 + 4 = 2 + 3 입니다. 6 = 2 + 4 입니다. 7 = 3 + 4 입니다. 따라서 [2,3,4,5,6,7] 을 return 해야 합니다. 입출력 예 #2 2 = 0 + 2 입니다. 5 = 5 + 0 입니다. 7.. 2022. 11. 29.
[프로그래머스/알고리즘] 같은 숫자는 싫어 (자바/Java) 문제 설명 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : 0보다 크거나 .. 2022. 11. 28.
[Java] JVM이란 ? JVM Java Virtual Machine의 줄임말. 직역을 하면 자바를 실행하기 위한 가상 기계(컴퓨터)이다. Java는 OS에 종속적이지 않다는 특징을 가지고 있다. OS에 종속받지 않고 실행되기 위해선 OS 위에서 Java를 실행시킬 무언가가 필요한데 그게 바로 JVM이다. 즉 JVM은 OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터이다. JVM을 사용함으로써 얻는 가장 큰 이점이 무엇일까요? JVM을 사용하면 하나의 바이트 코드(.class)로 모든 플랫폼에서 동작하도록 할 수 있다. .class 파일은 바이트 코드라고 하는데 사람이 쓰는 자바 코드에서 컴퓨터가 읽는 기계어로의 중간 단계 VM은 크게 아래와 같이 이루어져 있다. 클래스 로더(Class Loade.. 2022. 11. 27.
[Spring]REST API REST REST는 "Representational State Transfer" 의 약어 하나의 URI는 하나의 고유한 리소스(resource)를 대표하도록 설계 된다는 개념 스마트폰과 태블릿 등 서버에 접근하는 디바이스 종류가 다양해지고 있기에 디바이스 종류에 상관없이 공통으로 데이터를 처리할 수 있도록 하는 방식을 REST라고 한다 REST API는 사용자가 어떠한 요청을 했을 때 화면을 리턴하지 않고, 사용자가 필요로 하는 결과(데이터)만을 리턴해주는 방식이다. HTTP Method : Create, Read, Update, Delete API API는 "Application Programming Interface"의 약어 응용프로그램에서 사용할 수 있도록 다른 응용 프로그램을 제어할 수 있게 만든.. 2022. 11. 27.
[Spring] 디자인 패턴 디자인 패턴 (소프트 웨어)디자인 패턴이란 특정 문맥에서 공통적으로 발생하는 문제에 대해 쓰이는 재사용 가능한 해결책 목적별로 일정한 패턴이 제시되어 있음 완전한 정답이 되는 알고리즘과 달리 현재 상황에 맞춰 최적화된 패턴을 결정하여 사용하는 것이 좋음 대표적으로 구체화된 디자인 패턴은 GoF(Gang Of Four)에서 제시한 총 23개의 패턴이 있음 ※Gof : Erich Gamma , Richard Helm, Ralph Johnson, John Vissides 총 4명을 일컫음 장점 개발자 간의 원활한 협업이 가능 소프트웨어 구조를 파악하기 용이 재사용을 통해 개발시간을 단축 설계 변경이 있을 경우 비교적 원활하게 조치가 가능 단점 객체지향적 설꼐를 고려하여 진행해야 함 초기 투자 비용이 많이 들어.. 2022. 11. 27.