JAVA 89

[자바JAVA] 싱글톤 디자인 패턴

1. 싱글톤 - 자바의 디자인 패턴 - 하나의 애플리케이션 내에서 단 하나만 생성되는 객체 외부에서 new연산자로 인스턴스 생성할 수 없도록 private 접근 제어자를 붙임 2. 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package sec07_exam; public class Singleton { //접근제어자 범위가 가장 좁은 범위의 제어자이기 때문에 외부에서 접근을 못한다. private static Singleton singleton = new Singleton(); //싱글톤 패턴은 그 핵심이 하나의 인스턴스를 공유하는 것이다. //하여, 생성자에 private를 통해서 외부에서 싱글톤 객체의 생성을 막는다. private Singl..

JAVA/java 이론 2020.10.20

[자바JAVA] 메서드 오버라이딩

1. 오버라이딩(재정의) 조상클래스로부터 상속받은 메서드의 내용을 상속 받는 클래스에 맞게 변경하는 것 2. 오버라이딩의 조건 메서드의 선언부가 같아야한다. 접근 제어자를 좁은 범위로 변경할 수 없다. 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다. 3. 오버로딩 VS 오버라이딩 오버로딩 - 기존에 없던 메서드를 새로 정의하는 것 new 오버라이딩 - 상속받은 메서드의 구현부를 바꾸는 것 modify (예제) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package sec01_exam; //조상클래스 public class HddDisk { //멤버변수 int capacity;//용량 int rpm;//속도 //생성자 pub..

JAVA/java 이론 2020.10.19

[자바JAVA]상속/포함관계

이 포스팅은 아래의 내용이 포함되어있습니다. 1. 상속 2. 포함 3. 상속이냐 포함이냐 결정하기 4. 단일상속 5. Object클래스 6.예제 1. 상속 - 기존의 클래스를 사용하여 새로운 클래스를 만드는 것 - 자손은 조상의 멤버를 모두 상속받는다(생성자, 초기화 블럭 제외) - 자손의 멤버개수는 조상의 멤버개수보다 많다. - 공통부분은 조상에서 관리하고 개별 부분은 자손에서 관리한다. - 조상의 변경은 자손에게 영향을 끼치지만 자손의 변경은 조상에게 영향을 끼치지 않는다. 상속은 이렇게 extends (확장시키다) 를 붙이고 조상클래스를 상속받는 것 2. 포함 - 한 클래스를 멤버로 다른 클래스를 선언하는 것 포함은 이렇게 클래스 안에 다른 클래스를 멤버로 선언하는 것 3. 클래스간의 관계 결정하기..

JAVA/java 이론 2020.10.18

[자바JAVA] 생성자 constructor / this()/ 생성자를 이용한 인스턴스 복사

이 포스팅은 아래의 내용을 포함하고 있습니다. 1. 생성자 2. 생성자의 조건 3. 기본 생성자 4. 매개변수가 있는 생성자 5. this() 6. 생성자를 이용한 인스턴스 복사 7. 예제 1. 생성자란 인스턴스가 생성될때마다 호출되는 '인스턴스 초기화 메서드' 모든 클래스에는 하나이상의 생성자가 있어야함 생성자가 없을 시, 기본적으로 기본생성자를 컴파일러가 만들어줌 생성자가 있을 시, 기본생성자 안만들어줌 2. 생성자의 조건 리턴타입이 없다(하지만void를 쓰지 않는다.) 클래스의 이름과 동일하다. 3. 기본생성자 매개변수가 없는 생성자 public Car() { } 이런식으로 Car클래스에 있는 기본 생성자 4. 매개변수가 있는 생성자 public Car(int x){} 요런 식으로 매개변수가 있는 ..

JAVA/java 이론 2020.10.11

[자바JAVA]final필드와 상수

1. final필드 최종적인 값을 갖고 있는 멤버 변수 = 값을 변경할 수 없다. class앞에 붙으면 더 이상 확장 되지 않는다. 상속불가. - final의 초기화 방법 멤버 변수 선언시, 생성자에서 단 한번 초기화 2. 상수 static final 객체 마다 가지는 불변의 정적 필드 - 이름은 전부 대문자로 작성 다른 단어가 결합되면 _으로 연결 (예제) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 package sec02_exam_final; public class Person { //불변의 인스턴스 필드(선언과 동시에 초기화를 하거나, 혹은 생성자에서 단 한번만 초기화가 이루어진다.) final S..

JAVA/java 이론 2020.10.10

[자바JAVA] 메서드 오버로딩 overloading

이 게시물에는 아래의 내용이 포함되어있습니다. 1. 메서드 오버로딩 2. 오버로딩의 예 3. 오버로딩의 장점 4. 예제 1. 메서드 오버로딩 하나의 클래스에 같은 이름을 가진 메서드를 여러개 정의하는 것 메서드의 이름이 같고 매개변수의 개수와 타입이 다르다. 리턴타입이 다른 것은 오버로딩 성립안된다. 2. 오버로딩의 예 System.out.println메서드 같은 이름의 메서드에 매개변수타입이 다릅니다. 3. 오버로딩의 장점 하나의 이름의 메서드로 여러가지 기능을 구현할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 package sec01_exam_overload..

JAVA/java 이론 2020.10.10

[자바JAVA] 재귀호출, 팩토리얼

오늘은 재귀호출에 대해서 알아보겠습니다. 재귀호출이란 메서드 내에서 자기자신을 반복적으로 호출하는 것입니다. 팩토리얼, 제곱, 트리운행, 폴더목록표시 등에 쓰입니다. 코드로 확인해봅시다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 package sec03_exam; public class FactorialEx { public static void main(String[] args) { long result = FactorialEx.factorial(5L); System.out.println("5!의 값: " + result); } //자기자신을 호출하는 재귀 private static long factorial(long n) { ..

JAVA/java 이론 2020.10.09

[자바JAVA] call by value & call by reference/ 값에 의한 참조 & 주소에 의한 참조

오늘은 C언어에서 call by value와 call by reference와 같은 개념을 자바에서 배워보도록 하겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 package sec02_exam; public class PrimitiveParamEx { //c언어에서 call by value를 의미. 호출한 곳에 전혀 영향을 끼치지 않는다. public static void main(String[] args) { Data d = new Data(); d.x=10; System.out.println("main(): x = " + d.x); PrimitiveParamEx.change(d.x);//값에 의한 복사 System.ou..

JAVA/java 이론 2020.10.09

[자바JAVA]JVM의 메모리구조- 호출스택

JVM의 메모리 구조에서 호출스택에 대해 알아보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 package sec02_exam; public class CallStackEx { public static void main(String[] args) { System.out.println("main()실행됨"); CallStackEx.firstMethod(); System.out.println("main()종료됨"); } public static void firstMethod() { System.out.println("firstMethod()실행됨"); CallStackEx.secondMethod(); System.out.println("..

JAVA/java 이론 2020.10.08

[자바JAVA] 객체지향개념2 - 변수와 메서드. 클래스변수. 인스턴스 변수. 지역변수. static메서드. 인스턴스 메서드

1. 선언위치에 따른 변수의 종류 변수는 선언위치에 따라서 종류와 범위가 달라집니다. 종류는 아래 3가지 입니다. ① 클래스 변수 ② 인스턴스 변수 ③ 지역변수 클래스 변수는 앞에 static이 붙은 변수인데요 클래스가 메모리에 올라갈때 static영역에 올라갑니다. 인스턴스 변수는 클래스의 인스턴스를 new연산자를 통해 만들때 생성되구요 이 변수는 heap영역에 만들어집니다. 지역변수는 메서드 안에 있는 변수로, 메서드 내에서만 유효한 변수입니다. 인스턴스 변수는 꼭 초기화를 해주지 않아도 되지만 지역변수는 꼭 초기화를 해주어야합니다. 2. 클래스 변수와 인스턴스 변수 인스턴스 변수는 각 인스턴스 마다 가지는 고유의 값이고 클래스는 그 클래스를 통해 만드는 인스턴스에서 공통으로 가지는 값입니다. 1 2..

JAVA/java 이론 2020.10.08