접근 제어자의 종류
·
Language/Java
접근 제어자는 멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 수행합니다. 접근제어자는 생략이 가능하며 생략했을 때는 자동으로 default임을 뜻하게 됩니다. 따라서 default일 경우 접근 제어자를 지정하지 않습니다. 제어자 같은 클래스 같은 패키지 자손 클래스 전체 public O O O O protected O O O default O O private O private - 같은 클래스 내에서만 접근이 가능합니다. default - 같은 패키지 내에서만 접근이 가능합니다. protected - 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능합니다. public - 접근 제한이 전혀 없습니다. 이러한 접근 제어자를 사용하는..
static
·
Language/Java
JAVA 에서 static키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될때 해제되는 것을 의미합니다. 이를 정확히 이해하기 위해 메모리 영역에 대한 이해가 필요합니다. 일반적으로 프로그래머가 만든 class는 static영역에 생성되고, new 연산을 통해 생성된 객체는 heap영역에 생성됩니다. 객체의 생성시에 할당된 heap영역의 메모리는 GC를 통해 수시로 관리를 받는 반면, staic키워드를 통해 static영역에 할당된 메모리는 GC의 관리를 받지 않습니다. 모든 객체가 공유하는 메모리라는 장점을 지니지만, static을 자주 사용하게 된다면 프로그램의 종료시까지 메모리가 할당된채로 남아있기 때문에 사용시 신중한 숙고를 해야합니다. 다음으로 제어자 static에 대해 설명하자면..
클래스와 객체
·
Language/Java
클래스 - 객체를 만들기 위한 설계도 혹은 틀입니다. - 연관되는 변수와 메서드의 집합입니다. - 식상한 비유이지만 붕어빵 틀 객체 - 클래스에 설계한 모양대로 구현된 실체입니다. - 클래스의 타입으로 선언됨 - 소프트웨어 구현 대상 - 현실세계에 가까움 - 붕어빵 여기서 조금 더 상세하게 들어가자면 객체와 인스턴스는 사실 비슷하지만 다른 개념입니다. 인스턴스 - 설계를 바탕으로 소프트웨어 세계에서 구현된 실체 - 객체가 메모리에 할당되어 실제 사용될때 인스턴스라고 불리게 됨 - 소프트웨어에 가까움 - 클래스로부터 객체를 만드는 과정을 '인스턴스화'라고 부름 OOP(Object-Oriented Programming) 객체 지향 프로그래밍이란? 모든 데이터를 객체로 취급하는 프로그래밍을 의미합니다. 객체는..
인터페이스와 추상클래스
·
Language/Java
추상클래스는 한 개 이상의 추상 메서드를 가지는 클래스로, 선언만 되며 구현이 되지 않은 불완전한 메서드이므로 객체로 생성되지 않습니다. 여기서 추상메서드란 내용이 없는 메서드로 구현은 하지 않고 선언만 한 메서드입니다. 추상 메서드를 사용하기 위해 반드시 자식 클래스에서 해당 메서드를 재정의해야합니다. * 인스턴스 변수, 클래스 변수, 생성자, 클래스 메소드, 일반 메소드 선언 및 구현 가능 * 사용 목적 : 공통된 필드, 메소드의 이름 통일과 구체화 클래스 작성시 시간 절약을 위해서 추상클래스 선언 클래스를 선언할때 abstract 키워드를 사용합니다. new 연산자로 객체를 생성하지 못하고 상속을 통해 자식 클래스만 생성 가능합니다. public abstract class 클래스명 { } 추상 메소..
오버라이딩과 오버로딩
·
Language/Java
자바에서 다형성을 지원하는 오버로딩과 오버라이딩이 있습니다. 다형성이란? 하나의 클래스나 함수가 다양한 방식으로 동작하는 것을 의미하며, 대표적으로 오버로딩과 오버라이딩이 있습니다. 하나의 참조 변수로 여러 타입의 객체를 참조할 수 있는 것또한 의미합니다. 즉 조상타입의 참조변수로 자손의 객체를 다룰 수 있는 것이 다형성의 기본 개념입니다. 오버로딩이란? 메서드의 이름은 같고 매개변수의 유형과 개수가 다르도록 하는것을 의미합니다. 리턴값이 다르고 매개변수가 같은 경우는 성립되지 않습니다. Overloading.java public class Overloading { public void overload(){ System.out.println("오버로딩 예제"); } public void overload(..
어노테이션
·
Language/Java
JAVA 5버전부터 추가된 기능으로, 클래스나 메소드 위에 붙여서 사용합니다. ex) @Override 소스코드에 메타코드(추가정보)를 주는 것으로, 클래스가 컴파일 되거나 실행될 때 어노테이션의 유무나 어노테이션의 설정된 값을 통해서 클래스를 다르게 실행되게 할 수 있습니다. 어노테이션의 용도는 다음과 같습니다. 1) 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공합니다. ex) @Override => 메소드가 재정의 되어있는지 확인합니다. 2 ) 실행(런타임)시 특정 기능을 실행하도록 정보를 제공합니다. ex) 객체가 애플리케이션 내부에서 해야할 역할을 정의할 수 있습니다. (@Controller, @Servlet...) 이 어노테이션은 기본적으로 제공되는 것이 있고, 사용자가 직접 만들어..
GC에 대해
·
Language/Java
개발을 하다보면 유효하지 않은 메모리인 Garbage가 발생하게 됩니다. C언어와 같은 경우 free()라는 함수를 통해 직접 메모리를 해제 해주어야 하는 반면, JAVA를 사용하여 개발할 경우 개발자가 메모리를 직접 해제해주는 일은 거의 없는데요, 그 이유는 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문이죠. 예를 들어 이런 겁니다. Tako tako = new Tako(); tako.setFlavor("sweet"); tako = null; // 가비지 tako = new Tako(); tako.setFlavor("hot"); sweet이라는 tako객체는 참조되지 않고 사용이 되지 않아서 가비지가 되었습니다. Java는 이러한 메모리의 낭비를 방지하기 위해 Garbage Coll..
JVM의 구조와 자바의 구동 원리
·
Language/Java
일반 프로그램은 운영체제가 프로그램을 실행시키는 반면, 자바 프로그램은 운영체제가 JVM을 실행시키면 JVM이 프로그램을 실행시킵니다. 여기서 JVM이란 자바 가상머신으로, 자바 프로그램의 클래스 파일들은 운영체제에서 직접 동작하는게 아니라 이 JVM위에서 동작하는데요. 이로 인해 운영체제에 적합한 JVM을 설치하기만 한다면 자바 프로그램은 어떤 운영체제에서든 실행 시킬 수 있습니다. 이 JVM의 구조는 크게 Class Loader, GC, Execution Engine, Runtime Data Area로 나눠집니다. Class Loader에 대해 먼저 설명해보자면 java컴파일러(javac.exe)가 .java파일을 컴파일 하면 .class파일(바이트코드)이 생성됩니다. 이렇게 생성된 클래스 파일들을 ..
자바스크립트 - 클래스의 활용
·
Language/JavaScript
es6부터 class라는 개념이 도입되면서, 기존의 객체 생성자로 구현했던 코드들을 깔끔하게 구현할 수 있게 되었다. class Food { constructor(name){ this.name = name; this.brands = []; } addBrand(brand){ this.brands.push(brand); } print(){ console.log(`${this.name}을 파는 음식점들:`); console.log(this.brands.join(', ')); } } const pizza = new Food("피자"); pizza.addBrand('피자헛'); pizza.addBrand('도미노 피자'); const chicken = new Food('치킨'); chicken.addBrand('..
takoyummy
'Language' 카테고리의 글 목록 (5 Page)