Java

Ⅳ. 필드와 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) : 프로젝트의 하위 폴더의 개념 - 클래스 파일을 목적별로..
Ⅳ. this 키워드와 this( ) 메소드 1. this 키워드 vs this( ) 메소드 - this 키워드 : 자신이 속한 클래스의 객체 - this( ) 메소드 : 자기 클래스 내부의 다른 생성자를 호출 // Example class Car { String color; String name; Car() { System.out.println("자동차 생긴 거 축하해"); } Car(String car, String color) { // this : 지금 이 메소드를 호출한 객체 (soul이면 soul.name이 됨) // this() : 지금 이 메소드를 호출한 객체의 생성자 // this가 붙으면 필드, 안 붙으면 매개변수 this();// 이렇게 하면 위에 Car()를 호출함 (오버로딩) // ..
Ⅲ. 생성자 1. 클래스의 생성자 - 생성자 - 참조 자료형의 기반의 데이터가 생성될 때 호출되는 메소드 - 객체가 생성되는 그 순간(new)에 실행할 기능을 정의 2. 생성자의 2가지 특징 - 클래스의 이름과 동일 - 반환(리턴)타입이 존재하지 않음 ※ 생성자는 내가 쓰지 않아도 컴파일러가 자동 생성 (생성자 안에 내용이 있을 경우는 제외) 3. 생성자의 주요 역할 - 객체 생성 및 필드 초기화 - 생성자를 정의하지 않는 경우 → 기본 생성자의 자동 추가 ※ 모든 클래스는 생성자를 포함 // Example class Car { String color; String name; Car(String car) { System.out.println(car + " 자동차를 살까"); } Car() { System..
Ⅱ. 메소드 1. 메소드 - 메소드 : 클래스 내부에 정의된 기능(함수) - 메소드 명 : 기능을 나타내는 이름 (작명규칙은 변수와 동일) - 리턴 타입 : 이 메소드가 어떤 자료형의 값을 반환할 것인가 - 매개변수 정의 : 이 메소드가 어떤 값을 괄호 안에 받을 것인가 // Example1 class Car { String color; String name; // 다음과 같이 매개변수를 여러 개 할 땐, 콤마 ','로 표시 void chargeFuel(String oil, int price) { System.out.printf("%s %d원 어치 넣어주세요\n", oil, price); // %s 는 문자열 } } public class Main { public static void main(Strin..
Ⅰ. 필드 1. 필드 (Field) - 클래스 내부에 정의된 변수 - 객체의 속성값을 지정할 수 있는 클래스에 포함된 변수 - [비교] 지역변수 (Local variable)는 메소드에 포함된 변수 ※ 관례적으로, 클래스 이름을 지을 때는 앞글자를 대문자로 정함 - 필드 → Heap 메모리에 저장 - 지역변수 → Stack 메모리에 저장 // Example class Car { String color; String name; // 이건 필드 } public class Main { public static void main(String[] args) { Car a = new Car(); Car b = new Car(); Car c = new Car(); // int a; 여기에 이건 지역변수 a.name ..
Ⅰ. 클래스 개념 및 기본 구조 1. 클래스(Class)의 탄생 2. 절차지향형 vs 객체지향형 - 절차지향형 프로그래밍 : 순서에 맞추어 단계적으로 실행하도록 명령어를 나열 - 객체지향형 프로그래밍 : 객체를 구성하고 객체단위로 프로그래밍(필드/메소드) 3. 자바에서 제공하는 객체지향 요소 - 추상메소드(abstract method) : 함수의 정의가 미완성된 메소드 - 추상클래스 : 추상(abstract) 메소드를 하나 이상 가지고 있는 클래스 - 인터페이스 : 모든 필드는 public static final, 모든 메소드는 public abstract
1. String 참조자료형    ※ 참조자료형 : 데이터가 메모리에 저장되면, 해당 데이터의 첫 번째 주소를 참조하는 자료형 1) String 클래스 - 문자열 저장 클래스 타입 - 문자열은 쌍따옴표 (" ")안에 표기 - 문자열 데이터는 String 이라는 클래스를 기반으로 만듦    ※ 클래스(Class) : 참조자료형의 설계도. 그 안에는 참조자료형이 가진 속성이나 기능에 대한 정의가 쓰여있음    ※ 객체(Object) : 클래스를 본 떠 만든 실제 대상    ※ 클래스가 붕어빵 기계이면 객체는 붕어빵을 비유// ExampleString a = "apple" // String : 클래스, apple : 객체 2) String 객체를 생성하는 2가지 방법 - 방법 1. new 키워드를 사용한 객..
1. main( ) 메소드 매개변수public class Main { public static void main(String[] args) { }} - String[ ] args : 클래스의 메인 메소드가 전달받을 데이터 목록 - 위 코드를 메소드(Method)라 함 : 클래스가 지닌 기능
NewBean
'Java' 태그의 글 목록 (3 Page)