Programming Language

Ⅰ. 이너클래스 (Inner class) 1. 이너클래스 (Inner class) - 정의 : 클래스 내부에 포함된 클래스 - 종류 - 멤버클래스 - 1. 인스턴스 이너 클래스 - 2. 정적 이너 클래스 - 지역클래스 2. 인스턴스 멤버 이너클래스 - 특징: 외부(outter)클래스의 모든 접근지정자의 멤버 접근 가능 - 생성클래스명 : A.class, A$B.class - 객체생성방법 Step#1. 외부클래스 객체 생성 Step#2. 이너클래스 객체 생성 // Example package sample; class Dog { public String name = "순돌이"; void bark() {System.out.println("멍멍");} // 이너클래스는 외부클래스의 부속 개념으로 만들어 줌 cl..
Ⅱ. 인터페이스(Interface) 1. 인터페이스 ※ 인터페이스 : 클래스 상호 간의 공통사항을 공유하기 위한 일종의 약속 - 모든 필드가 public static final로 정의 - 모든 메소드가 public abstract로 정의 (디폴트 메소드 제외) - 인터페이스로 new 연산 못함 - 인터페이스도 다형성 적용 가능 - 디폴트 메소드는 public로 정의 - 자체적으로 객체 생성 불가 2. 인터페이스 정의 3. 인터페이스의 상속 - 상속 시 implements 사용 // Example package sample; // 인터페이스 : 클래스 상호 간의 공통사항을 공유하기 위한 일종의 약속 interface Refri { void iceMaking(); void normalTemp(); void ..
Ⅰ. 추상클래스 (abstract class) 1. 추상클래스의 위치 2. 추상클래스의 개념 - 추상메소드(abstract method)를 포함한 클래스 - 메소드의 본체({ })가 없고 세미콜론(;)으로 끝남 3. 오버라이딩(overriding) vs. 구현하기(implements) - 오버라이딩 (overriding) - 부모클래스의 메소드(완성/미완성)를 자식클래스에서 재정의(완성) - 구현하기 (implements) - 부모클래스의 미완성메소드(추상메소드)를 자식클래스에서 재정의(완성) 4. 추상클래스의 특징 - class 앞에 abstract를 붙여야 함 - 추상클래스는 그 자체로는 객체 생성 불가함 (추상메소드(abstract method/미완성 메소드)를 포함하기 때문) - 추상 클래스는 오..
Ⅱ. abstract (추상화) 1. 추상화의 종류 - 추상 클래스 - 인터페이스 2. abstact(추상) 메소드 ※ 추상화 : 뚜렷한게 형태가 있지 않지만, 그것을 표현해 둠 - 뚜렷하게 기능이 정의되어 있지 않은, 선언 부분만 존재하는 메소드 // Example package sample; // 추상 메소드가 하나라도 있으면, 클래스는 '추상 클래스'여야 함 abstract class Animal { // abstract : 기능 없이 상속만 가능 (중괄호를 없애야 함) abstract void hunting(); } class Eagle extends Animal { void hunting() { System.out.println("생쥐 사냥"); } } class Puma extends Anim..
Ⅰ. final 1. final 필드, final 지역변수 - 변수의 상수화 - 처음 지정된 값을 바꿀 수 없음 - 변수에 final을 붙이면 변수가 아니게 됨 → 값을 변경할 수 없고, 추가적인 값의 대입 자체가 불가 (상수의 상태가 됨) ※ final로 변수를 고정시킬 경우, 선언과 동시에 값을 지정해야 함 ex) final int a = 3; 2. final 메소드, final 클래스 - final 메소드 : 상속시 Override 불가 - final 클래스 : 상속 자체 불가 3. final 필드/메소드/클래스 메소드 최종정리
Ⅵ. 최상위 클래스 Object 1. Object 클래스 : 모든 자바 클래스의 부모 클래스 - 자바의 모든 클래스는 Object의 자식클래스 = 자바의 모든 클래스는 Object의 메소드를 가짐 2. Object 메소드 : toString ( ) - 객체의 정보 패키지.클래스명@해쉬코드 - 일반적으로 오버라이딩해서 사용 // Example1 // Object 클래스의 toString() 메소드 package sample; class A { //extends Object (컴파일러에 의해서 자동추가) int a = 3; int b = 4; } class B {// toString() overriding int a = 3; int b = 4; public String toString() { return "..
Ⅴ. super와 super( ) 1. super 키워드 vs super() 메소드 - super 키워드 → 부모클래스의 객체 - 필드명 중복 또는 메소드 오버라이딩으로 가려진 부모의 필드/메소드를 호출하기 위해 주로 사용 // Example1 // 멤버 앞에 참조변수를 생략(this.)하는 경우의 메소드 호출 package sample class A { void abc() { System.out.println("A 클래스의 abc()"); } } class B extends A { void abc() { System.out.println("B 클래스의 abc()"); } void bcd() { abc(); // this.abc(); 와 동일 (this는 나 자신, super는 부모) } } public..
Ⅳ. 필드와 static 멤버(필드/메소드)의 중복 1. 인스턴스 필드는 오버라이딩이 되지 않음 ※ 오버라이딩 : 덮어쓰는 기능 - 서로 다른 메모리를 가지므로 불가능 // Example 인스턴스 필드의 중복 package sample; class A { int m = 3; } class B extends A { int m = 4; } public class Main { public static void main(String[] args) { // 1. 객체생성 A aa = new A(); B bb = new B(); A ab = new B();// 참조 변수에 따라서 결정됨 (A) // 2. 인스턴스 필드 System.out.println(aa.m);// 3 System.out.println(bb.m)..
Ⅲ. 메소드 오버라이딩(Overriding) 1. 메소드 오버라이딩(Overriding) - 메소드 오버라이딩 - 부모클래스에게 상속받은 메소드를 재정의하여 사용 (덮어쓰기 개념) - 메소드 오버라이딩을 위한 조건 - 부모클래스의 메소드와 시그니처 및 리턴 타입 동일 - 부모클래스의 메소드보다 접근지정자는 같거나 넓어야 함 2. 메소드 오버라이딩 (Method Overriding)의 메모리 구조 - 객체내에 동일한 멤버가 두개 이상 있는 경우 : 참조변수가 가리키는 객체의 바깥쪽부터 안쪽으로 들어가면서 첫번째 만나는 멤버가 실행 ※ 메소드 오버라이딩 효과 - 메모리를 재사용하므로 메모리 절약 - 메소드명을 재사용하므로 기능 파악 용이 // Example1 package sample; class A { v..
Ⅱ. 객체의 타입변환 1. 객체의 타입변환 (업캐스팅과 다운캐스팅) - 상속관계에 있는 경우 객체도 타입변환이 가능 - 업캐스팅은 항상 가능 : 생략시 컴파일러에 의해 자동캐스팅 - 다운캐스팅은 때에 따라서 가능/불가능 : 가능한 경우에만 수동으로 직접 캐스팅 필요 // Example package sample; class A {} class B extends A{} class C extends B{} class D extends B{} public class Test { public static void main(String[] args) { // 1. 업캐스팅 (자동변환): 생략시 컴파일러가 자동 추가 // ※ new 를 무엇으로 했느냐가 중요 A ac = (A)new C(); // C->A 업캐스팅..
Ⅰ. 클래스의 상속 1. 상속의 개념 - 상속 : 기존의 클래스로부터 자원을 물려받아 재사용하는 것 (상속은 확장의 개념) ※ 자바에서 만드는 모든 클래스는 자바 기본 클래스인 Object의 자식임 - 부모클래스의 멤버(필드, 메소드, 이너클래스)를 자식클래스가 내려받아(상속) 클래스 내부에 포함 - 자바의 상속은 오로지 위에서 아래로만 진행 - 물려주는 클래스 : 부모클래스, 상위클래스, 슈퍼클래스, 기초클래스 - 물려받는 클래스 : 자식클래스, 하위클래스, 서브클래스, 유도클래스 // Example package Sample; // class : 참조자료형(객체를 만드는 자료형)을 설계한 것 // 접근 제어 지시자 : 사용 가능 범위를 선언함 class Human { String name; int a..
Ⅱ. Static 1. static(정적) 키워드 (필드) - 정적 멤버로 선언 ※ 정적 멤버 : 선언되는 순간부터 프로그램 종료시까지 존재하는 멤버 - 객체생성 없이 바로 사용 가능 (static 메모리 영역에 따로 저장됨) ※ 동적 할당(Dynamic Allocation) : c언어(자바)에서 힙 영역에 메모리를 할당받는 작업 → 참조자료형 기반으로 객체 생성 // Example 인스턴스 필드와 정적필드의 활용 방법 package sample; class A { int m = 3;//인스턴스 필드 (논스태틱 멤버) static int n = 5;//정적(static) 필드 (스태틱 멤버) } public class Main { public static void main(String[] args) { ..
Ⅰ. 접근지정자 (접근제어자) ※ 제어자 : 어떤 자원에 대해 기능을 제한하거나 확장하는 키워드 1. 멤버 및 생성자의 접근지정자 ※ 접근 지시 제어자 : 자원의 활동 범위를 지시함 - 멤버 및 생성자에서 사용되는 4가지 접근지정자 (public, protected, default, private) ※ default 는 아무것도 안 쓴 것이므로 사실상 접근지정자는 3개임 - 멤버 및 생성자에서 사용되는 4가지 접근지정자의 사용가능 범위 - 접근 가능한 범위 : public > 아무것도 안 쓴 것 > protected > private - public : 프로젝트의 아무 곳에서나 쓸 수 있음 - private : 클래스 바깥에서는 쓸 수 없음 - protected : 클래스 및 상속 관계에서는 쓸 수 있음..
Ⅱ. 외부클래스(external class) 1. 외부 클래스의 특징 - 클래스의 외부에서 정의 - 동일한 파일에 작성된 클래스는 동일한 패키지내의 클래스로 간주 - 하나의 파일에는 최대 하나의 public class만 존재가능 (파일 이름과 동일) ※ 하나의 파일에 작성된 외부클래스는 다른 패키지에서 사용 불가 ※ 다른 패키지에서 사용하고자 한다면 파일 분리
Ⅰ. 패키지(Package)와 임포트(Import) 0. 복습 - 클래스 : 참조자료형의 설계도 - 객체 : 참조자료형으로 참조하는 데이터 - 객체가 가지는 것 - 필드(속성, 내부 변수) : 객체가 가지고 있는 값(value) - 메소드 : 객체가 가지고 있는 기능(Function = Method) - 메소드 - 생정자 : 객체가 생성되는 순간(new)에 처리할 기능을 정의한 메소드 - 일반 메소드 : 객체의 기능을 정의한 코드 블록 (리턴타입, 메소드명, 매개변수, {몸통}) - 메소드 오버로딩 : 리턴 타입과 메소드명이 동일한 메소드를 여러 개 지정할 수 있는 것 1. 패키지(Package)와 임포트(Import) - 패키지(Package) : 프로젝트의 하위 폴더의 개념 - 클래스 파일을 목적별로..
NewBean
'Programming Language' 카테고리의 글 목록 (4 Page)