목록공부 (45)
랩터
추상화먼저 “추상”이라는 용어의 사전적 의미를 보면 “사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것"이라고 정의합니다. 자바에서의 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 의미합니다. 상속이 하위 클래스를 정의하는데 상위 클래스를 사용하는 것이라고 한다면 추상화는 반대로 기존 클래스들의 공통적인 요소들을 뽑아서 상위 클래스를 만들어 내는 것이라고 할 수 있습니다. 자바에서는 주로 추상클래스와 인터페이스라는 문법 요소를 사용해서 추상화를 구현함. abstract 제어자abstract는 주로 클래스와 메서드를 형용하느 키워드로 사용, 메서드 앞에 붙은 경우를 '추상 메서드', 클래스 앞에 붙은 경우를 '추상 클래스'라 각각 부릅니다.어떤 클래스에 추..
캡슐화캡슐화란 특정 객체 안에 관련된 속성과 기능을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것을 말합니다. 이렇게 캡슐화를 해야 하는 이유로 크게 두 가지 목적이 있습니다. 첫째는 데이터 보호의 목적이고, 둘째로 내부적으로만 사용되는 데이터에 대한 불필요한 외부 노출을 방지하기 위함입니다.자바에서 캡슐화를 수행하기 위한 핵심적인 수단으로 접근제어자(Access Modifier)와 getter와 setter 메서드를 중심으로 사용합니다. 패키지패키지(package)란 특정한 목적을 공유하는 클래스와 인터페이스의 묶음을 의미합니다. 패키지는 클래스들을 그룹 단위로 묶어 효과적으로 관리하기 위한 목적을 가지고 있습니다. 패키지가 있는 경우 소스 코드의 첫 번째 줄에 반드시 pack..
상속자바 언어에서 상속이란 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소를 의미합니다.두 클래스를 상위 클래스와 하위클래스로 나누어 상위클래스의 멤버(필드,메서드,내부클래스)를 하위클래스와 공유하는것을 의미합니다. 하위클래스는 상위 클래스가 가진 모든 멤버를 상속받게 됩니다. import java.sql.SQLOutput;class Person{ String name; int age; void learn(){ System.out.println("공부를 합니다."); } void walk(){ System.out.println("걷습니다."); } void eat(){ System.out.println("밥을..
내부 클래스내부 클래스(Inner Class)는 클래스 내에 선언된 클래스로, 외부 클래스와 내부 클래스가 서로 연관되어 있을 때 사용합니다. 내부 클래스를 사용하면 외부 클래스의 멤버들에 쉽게 접근할 수 있고, 코드의 복잡성을 줄일 수 있습니다. 또한 외부적으로 불필요한 데이터를 감출 수 있어 뒤에서 학습하게 될 객체지향의 중요한 핵심 원칙인 캡슐화를 달성하는데 유용합니다. 세 가지의 내부 클래스의 종류는 각각 인스턴스 내부 클래스, 정적 내부 클래스, 그리고 지역 내부 클래스로 구분할 수 있습니다.종 류 선언 위치 ..
필드(Field)필드는 ‘클래스에 포함된 변수'를 의미하는 것으로 객체의 속성을 정의할 때 사용됩니다. 자바에서 변수는 크게 클래스 변수(cv, class variable), 인스턴스 변수(iv, instance variable), 그리고 지역 변수(lv, local variable)라는 세 가지로 구분될 수 있습니다. 이 중 우리가 필드라 부른 것은 클래스 변수와 인스턴스 변수이며, 이 둘은 다시 static 키워드의 유무로 구분할 수 있습니다. static키워드가 함께 선언된 것은 클래스 변수, 그렇지 않은 것은 인스턴스 변수입니다. 그리고 이 두가지 변수 유형에 포함되지 않고 메서드 내에 포함된 변수를 지역변수라 부릅니다.class Example { // => 클래스 영역 int instanceVa..
생성자는 말 그대로 객체를 생성하는 역할을 하는 크래스의 구성 요소로서, 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드라 정리할 수 있습니다. 인스턴스 생성은 new키워드이며, 생성자는 인스턴스 변수들을 초기화하는데 사용되는 특수한 메서드라 할 수 있습니다. 생성자는 메서드와 두가지 차이가 있습니다. 첫번째는 생성자의 이름은 반드시 클래스의 이름과 같아야 합니다.두번째로, 생성자는 리턴 타입이 없습니다. 하지만 void키워드를 사용하지않습니다. 생성자는 리턴 타입자체가 존재하지 않기 때문입니다. this vs this()this()앞서 메서드의 호출 내용에서 같은 클래스 안에 메서드들끼리 서로 호출할 수 있었던 것처럼 생성자도 상호 호출이 가능합니다. 그리고 이를 위해 사용하는 것이 바로 this..
변수의 데이터 타입을 가장 크게 보면 기본형과 참조형으로 분류할 수 있다. 사용하는 값을 변수에 직접 넣을 수 있는 기 본형, 그리고 이전에 본 Student student1 과 같이 객체가 저장된 메모리의 위치를 가리키는 참조값을 넣을 수 있는 참조형으로 분류할 수 있다.기본형(Primitive Type): int , long , double , boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이 터 타입을 기본형이라 한다.참조형(Reference Type): Student student1 , int[] students 와 같이 데이터에 접근하기 위한 참조 (주소)를 저장하는 데이터 타입을 참조형이라 한다. 참조형은 객체 또는 배열에 사용된다.기본형은 연산이 가능하지만 참조형은 연산이 불가..
클래스(Class)란 이러한 객체를 정의한 '설계도(blueprint)' 또는 '틀(frame)’이라 정의할 수 있습니다. 즉, 클래스는 객체를 생성하는 데 사용되며, 반대로 객체는 클래스에 정의되고 설계된 내용 그대로 생성됩니다. 클래스를 통해 생성된 객체를 우리는 해당 클래스의 인스턴스(instance)라 부릅니다. 또한 클래스로부터 객체를 만드는 과정을 우리는 인스턴스화(instantiate)라 지칭합니다. 1.변수 선언Student student1 // Student 변수 선언 Student 타입을 받을 수 있는 변수를 선언한다.int 는 정수를, String 은 문자를 담을 수 있듯이 Student 는 Student 타입의 객체(인스턴스)를 받을 수 있다. 2.객체 생성student1 = n..
네이티브 애플리케이션은 Apple ios, android os, windows 와 같은 특정 실행 환경에 종속되게 됨. 네이티브 애플리케이션의 장점웹애플리케이션보다 빠릅니다.애플리케이션이 설치된 기기의 시스템/기기의 리소스에 접근이 용이합니다.(GPS 기능이나 카메라).인터넷 없이 사용 가능합니다.웹애플리케이션에 비해 안전합니다.(모바일의 경우 앱스토어에 승인을 받아야 합니다. 네이티브 애플리케이션의 단점웹애플리케이션에 비해 개발비가 더 들어간다(아이폰과 안드로이드 간의 멀티 플랫폼 개발 등).빠른 업데이트가 힘들다.앱스토어에 승인받기가 힘들고 비용이 발생한다.웹애플리케이션은 웹 브라우저를 통해 접근이 가능한 애플리케이션이다. 웹애플리케이션의 장점브라우저를 통해 실행되기 때문에 설치나 다운로드가 필요 없..
가장 기본적인 연산 방식이지만 이를 프로그램으로 만들기는 그리 간단하지 않습니다. 사용자가 입력한 값에 맞는 구구단을 제어문과 반복문을 활용하여 프로그램을 만들어 주세요. package com.codestates.seb.gugudan;import java.util.Scanner;public class gugudan { public static void main(String[] args) { //TODO: // 0. 구구단을 정의하기 전 구구단 연산을 위한 변수를 선언합니다. System.out.println("[안내]희망하는 구구단을 숫자로 입력해 주세요 "); // 1. 단을 입력합니다. // 클래스에 포함된 메서드를 활용하기 위해 객체 생성 // Scanner(클래스..