SOLID BASIC
[JAVA] 예외처리( exception handing ) -(2)
1. 프로그램 오류 프로그램 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생 시점에 따라 '컴파일에러( compile error )'와 '런타입에러( runtime error )'로 나눌 수 있는데 컴파일에러는 컴파일할 때 발생하는 에러이고 프로그램 실행 중에 발생하는 에러를 런타임에러라고 한다. 컴파일에러 컴파일 시에 발생하는 에러( 주로 문법 ) 런타입에러 실행 시에 발생하는 에러( 배열 범위 벗어남 ) 논리적에러 실행은 되지만 의도와 다르게 동작하는 것 자바에서는 실행 시( runtime ) 발생할 수 있는 프로그램의 오류를 에러( error )와 예외( exception ) 두 가지로 구분..
[JAVA] 내부클래스( inner class ), 익명클래스( anonymous class )
내부클래스 내부 클래스란 클래스 안에 선언된 클래스 어느 위치에 선언하느냐에 따라서 4가지 형태가 있을 수 있다. 첫번째는 클래스 안에 인스턴스 변수, 즉 필드를 선언하는 위치에 선언되는 경우. 보통 중첩클래스 혹은 인스턴스 클래스라고 한다. 내부에 있는 Cal객체를 생성하기 위해서는, 밖에는 InnerExam1의 객체를 만든 후에 InnerExam1.Cal cal = t.new Cal();과 같은 방법으로 Cal객체를 생성한 후 사용한다. public class InnerExam1{ class Cal{ int value = 0; public void plus(){ value++; } } public static void main(String args[]){ InnerExam1 t = new InnerE..
[JAVA] 인터페이스 (interface)
인터페이스 만들기 인터페이스: 서로 관계가 없는 물체들이 상호 작용을 하기 위해서 사용하는 장치나 시스템 인터페이스 정의하는 방법 추상 메소드와 상수를 정의 할 수 있다. public interface TV{ public int MAX_VOLUME = 100; public int MIN_VOLUME = 0; public void turnOn(); public void turnOff(); public void changeVolume(int volume); public void changeChannel(int channel); } 인터페이스에서 변수를 선언하면 컴파일시 자동으로 아래와 같이 바뀐다. public static final int MAX_VOLUME = 100; public static final..
[JAVA] 예외처리 (Exception) -(1)
Exception 프로그램실행중 예기치 못한 사건을 예외라고 한다. 예외 상황을 미리 예측하고 처리할 수 있는데, 이렇게 하는 것을 예외 처리라고 한다. public class ExceptionExam { public static void main(String[] args) { int i = 10; int j = 5; int k = i / j; System.out.println(k); System.out.println(main 종료!!); } } 위 코드에서 j를 0으로 바꾸면 Excption 발생 j를 0으로 바꾸면 ArithmeticException이 발생하면서 프로그램이 종료된다. Java는 정수를 정수로 나눌때 0으로 나누면 안된다.0으로 나누면 오류가 발생하는 것 예외 처리 프로그래머는 j라는 ..
[JAVA] 가상 메서드(virtual method)
상속에서 상위 클래스와 하위 클래스에 같은 이름의 메서드가 존재할 때 호출되는 메서드는 인스턴스에 따라 결정된다. 선언한 클래스형이 아닌 생성된 인스턴스의 메서드를 호출하는 것. 인스턴스의 메서드가 호출되는 기술을 '가상 메서드(virtual method)'라고 한다. 가상메서드 자바의 클래스는 필드(멤버변수)와 메서드(멤버 함수)로 이루어져 있다. 클래스를 생성하여 인스턴스가 만들어지면 필드(멤버 변수)는 힙 메모리에 위치한다. 변수가 사용하는 메모리와 메서드가 사용하는 메모리는 다르다. 변수는 인스턴스가 생성될 때마다 새로 생성되지만, 메서드는 실행해야 할 명령 집합이기 때문에 인스턴스가 달라도 같은 로직을 수행해야 한다. 같은 객체의 인스턴스를 여러 개 생성한다고 해서 메소드도 여러개 생성되지 않는..
[JAVA] 인터페이스(interface)
인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는지 미리 알려주는 명세 또는 약속의 역할을 한다. 예를들어, Abc 인터페이스를 구현한 A 클래스가 있다고 가정하자. 이 인터페이스에는 구현할 추상 메서드가 모두 선언되어 있고, 어떤 매개변수가 사용되는지, 어떤 자료형 값이 반환되는지 선언되어 있다. 즉, Z프로그램에서 A 클래스의 구현 코드 전체를 살펴보지 않고도 A 클래스를 어떻게 사용하는지 알 수 있다는 것이다. 인터페이스를 구현하면 다형성을 구현하여 확장성 있는 프로그램을 만들 수 있다. 즉, 클라이언트 프로그램을 많이 수정하지 않고 기능을 추가하거나 다른 기능을 추가할 수 있다. 인터페이스(Interface)란? 자바에서 인터페이스는 클래스들이 필수로 구현해야 하는 추상 자료형이다. 객체의..
[JAVA] 다운캐스팅 (DownCasting)
다운 캐스팅(DownCasting) 다운캐스팅은 거꾸로 부모 클래스가 자식 클래스 타입으로 캐스팅 되는 것이다. 다운캐스팅은 캐스팅 연산자 괄호를 생략할 수 없다 다운캐스팅의 목적은 업캐스팅한 객체를 다시 자식 클래스 타입의 객체로 되돌리는데 목적을 둔다. (복구) 다운 캐스팅은 부모 클래스를 자식클래스로 캐스팅하는 단순히 업캐스팅의 반대 개념이 아니다. 다운 캐스팅의 진정한 의미는 부모 클래스로 업 캐스팅된 자식 클래스를 복구하여, 본인의 필드와 기능을 회복하기 위해 있는 것이다. 즉, 원래 있던 기능을 회복하기 위해 다운캐스팅을 하는 것이다. JAVA class Unit { public void attack() { System.out.println("유닛 공격"); } } class Zealot ex..
[JAVA] ArrayList 사용법
ArrayList는 자바에서 기본적으로 많이 사용되는 클래스다. ArrayList는 자바의 List 인터페이스를 상속받은 여러 클래스 중 하나이다. 일반 배열과 동일하게 연속된 메모리 공간을 사용하며 인덱스는 0부터 시작한다. ArrayList 배열과의 차이점은 배열은 크기가 고정인 반면 ArrayList는 크기가 가변적으로 변한다는 것이다. 내부적으로 저장이 가능한 메모리 용량(Capacity)이 있으며 현재 사용 중인 공간의 크기(Size)가 있다. 만약 현재 가용량(Capacity) 이상을 저장하려고 할 때 더 큰 공간의 메모리를 새롭게 할당한다. 자바의 ArrayList를 활용하는 방법을 알아보자. 1. ArrayList 생성 자바에서 ArrayList를 사용하려면 아래 구문을 먼저 추가해야 한다..
[JAVA] 상속 | 다형성(Polymorphism)
https://changel.tistory.com/165 [JAVA] 상속 | 메서드 오버라이딩 https://changel.tistory.com/164 [JAVA] 상속 | 부모를 부르는 예약어, super 자바에서 굉장히 중요한 개념인 상속의 기초적인 개념을 저번 글에서 다루었다. https://changel.tistory.com/163 [Java] 상속 inheritance, 클 changel.tistory.com 상속 챕터를 공부하면서 묵시적 클래스 형변환과 가상 메서드 개념에 대해 확실하게 이해했다. 이제 이것을 바탕으로 객체 지향의 중요한 특성인 다형성에 대해 정리해 보고자 한다. 참고로 다형성은 추상 클래스, 인터페이스 등에서 구현된다. 다형성 - Polymorphism 다형성이란 하나의 코..
[JAVA] 상속 | 메서드 오버라이딩
https://changel.tistory.com/164 [JAVA] 상속 | 부모를 부르는 예약어, super 자바에서 굉장히 중요한 개념인 상속의 기초적인 개념을 저번 글에서 다루었다. https://changel.tistory.com/163 [Java] 상속 inheritance, 클래스 생성과 형변환 | 예제를 통해 이해하기 자바 개념을 확실하 changel.tistory.com 지난편에 이어 상속의 메서드 오버라이딩 개념에 대해 정리해보고자한다. 상위 클래스에 정의한 메서드가 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 이 메서드를 재정의 할 수 있다. 이를 메서드 오버라이딩이라고 한다. 걍 쉽게 말해서 상속 받은 상위 클래서의 메서드가 내가 구현할 클래스에서 필요 없거나 고쳐..