개발일지

개발일지/Java

Java 캡슐화 (Encapsulation)

특정 객체 안에 관련된 속성과 기능을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것 캡슐화의 목적 데이터 보호 내부적으로만 사용되는 데이터에 대한 불필요한 외부 노출 방지 패키지 (package) 특정한 목적을 공유하는 클래스와 인터페이스의 묶음 클래스들을 그룹 단위로 묶어 효과적으로 관리하게 위해 사용 Import문을 통해 접근하거나 (.)을 사용하여 접근 우리가 컴퓨터를 사용할 때 폴더를 만들어 그 폴더와 관련된 파일들을 관리하는 것과 같다 쉽게 말해 폴더를 만들어 자바 파일들을 모아 놓은 것 접근 제어자 제어자 (Modifier) 클래스, 필드, 메서드, 생성자 등에 부가적인 의미를 부여하는 키워드 접근 제어자와 기타 제어자로 구분 접근 제어자 : public, protected, (defa..

개발일지/Java

Java 상속 ( Inheritance )

기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소 상속 두 클래스를 상위 클래스와 하위 클래스로 나누어 상위 클래스의 멤버(필드, 메서드. 이너 클래스)를 하위 클래스와 공유하는 것. 하위 클래스의 멤버 개수는 항상 상위 클래스와 같거나 많다. 상위 클래스를 연장하여 만든 클래스에 새로운 기능을 추가하여 사용할 수 있다 상속을 통해 코드를 재사용하여 코드의 중복을 제거할 수 있다 다형적 표현이 가능 단일 상속만 가능 ( 여러 클래스를 상속받을 수 없음 ) class Person { String name; int age; void learn(){ System.out.println("공부를 합니다."); }; void walk(){ System.out.println("걷습니다."); };..

개발일지/Java

Java 지역 내부 클래스

지역 내부 클래스는 클래스의 멤버가 아닌 Method 내에서 정의되는 클래스이다. 지역 변수와 유사하게 메서드 내부에서만 사용 가능하다 -> 일반적으로 메서드 안에서 선언 후 바로 객체를 생성해서 사용한다 public class Main { public static void main(String[] args) { Outer outer = new Outer(); outer.test(); } } class Outer { int num = 5; void test() { int num2 = 6; class LocalInClass { // 지역 내부 클래스 void getPrint() { System.out.println(num); System.out.println(num2); } } LocalInClass lo..

개발일지/Java

Java 멤버 내부 클래스

인스턴스 내부 클래스와 정적 내부 클래스를 합쳐서 부른다 객체 내부에 멤버의 형태로 존재하며, 외부 클래스의 모든 접근 지정자의 멤버에 접근할 수 있다. 인스턴스 내부 클래스 객체 내부에 멤버의 형태로 존재하며, 외부 클래스의 모든 접근 지정자의 멤버에 접근할 수 있다. class Outer { private int num = 1; // 외부 클래스 인스턴스 변수 private static int sNum = 2; // 외부 클래스 정적 변수 private InClass inClass; // 내부 클래스 자료형 변수 선언 public Outer() { inClass = new InClass(); // 외부 클래스 생성자 } class InClass { // 인스턴스 내부 클래스 int inNum = 10..

개발일지/Java

Java 내부 클래스 (Inner class)

클래스 내에 선언된 클래스 외부 클래스와 내부 클래스가 서로 연관되어 있을 때 사용한다. 장점 내부 클래스를 사용하면 외부 클래스의 멤버들에 쉽게 접근할 수 있다 코드가 간결해진다 외부적으로 불필요한 데이터를 감출 수 있어 캡슐화에 유용 내부 클래스의 종류 class Outer { // 외부 클래스 class Inner { // 인스턴스 내부 클래스 } static class StaticInner { // 정적 내부 클래스 } void run() { class LocalInner { // 지역 내부 클래스 } } } 종류 선언 위치 사용 가능한 변수 인스턴스 내부 클래스(instance inner class) 외부 클래스의 멤버변수 선언위치에 선언(멤버 내부 클래스) 외부 인스턴스 변수, 외부 전역 변수..

개발일지/Java

Java 생성자(Constructor)

객체를 생성하는 역할을 하는 클래스의 구성요소 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드 new 키워드를 사용하여 객체를 생성할 때에 호출되는 것이 사실 생성자이다. 생성자라는 이름 때문에 생성자가 인스턴스를 생성하는 역할을 한다는 오해가 발생하는데, 사실이 아니다 인스턴스 생성을 담당하는 것은 new 키워드이며, 생성자는 인스턴스 변수들을 초기화하는 데 사용되는 특수한 메서드이다. 생성자는 메서드와 비슷한 구조를 가지고 있지만 크게 두 가지 부분에서 큰 차이를 갖는다. 생성자의 이름은 반드시 클래스의 이름과 같아야 한다 생성자는 리턴 타입이 없다. (void 키워드도 사용하지 않는다. 리턴하지 않는다는 의미의 void와는 다르게 아예 리턴 타입 자체가 존재하지 않는다.) 클래스명(매개변수) ..

개발일지/Java

Java 메서드 오버로딩(Method Overloading)

하나의 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것 자바 가상 머신은 메서드의 이름 또는 매개변수의 타입이 다르면 다른 메서드라고 인식한다. 메서드 오버로딩을 하려면 같은 이름의 메서드명 매개변수의 개수나 타입이 다름 public class Overloading { public static void main(String[] args) { Shape s = new Shape(); // 객체 생성 s.area(); // 메서드 호출 s.area(5); s.area(10,10); s.area(6.0, 12.0); } } class Shape { public void area() { // 메서드 오버로딩. 같은 이름의 메서드 4개. System.out.println("넓이"); } public voi..

개발일지/Java

Java 메서드 (Method)

특정 작업을 수행하는 일련의 명령문들의 집합 메서드는 클래스의 기능에 해당하는 내용들을 담당한다. 크게 머리에 해당하는 메서드 시그니처(method signature)와 몸통에 해당하는 메서드 바디(method body)로 구분된다. 기본적인 구조는 다음과 같다 자바제어자 반환타입 메서드명(매개 변수) { // 메서드 시그니처 메서드 내용 // 메서드 바디 } 반환 타입 : 메서드가 어떤 타입을 반환하는 가 메서드명 : 매서드 이름 매개 변수 : 해당 작업을 수행하기 위한 재료에 대한 정보 public static int add(int x, int y) { // 메서드 시그니처 int result = x + y; // 메서드 바디 return result; } 메서드의 반환 타입이 void가 아닌 경우에..

개발일지/Java

Java 필드(Field)

클래스에 포함된 변수 자바에서 변수는 클래스 변수(cv, class variable), 인스턴스 변수(iv, instance variable), 지역 변수(lv, local variable)로 구분될 수 있다. 일반적으로 필드라고 부르는 것은 클래스 변수와 인스턴스 변수이며, 이 둘은 다시 static 키워드의 유무로 구분된다. static 키워드가 붙으면 -> 클래스 변수 없으면 -> 인스턴스 변수 이 세 가지 유형의 변수들은 주로 선언된 위치에 따라 그 종류가 결정되며 각각의 유효 범위를 가지게 된다. class Example { int instanceVariable; // 인스턴스 변수 static int classVariable; // 클래스 변수(static 변수, 공유변수) void metho..

E-room
'개발일지' 카테고리의 글 목록 (16 Page)