목록JAVA (78)
FlowerBombs
Inner Class (내부 클래스)클래스 안에 또 다른 클래스를 포함시켜, 클래스의 구조를 내부적으로 확장하는 방법.클래스가 갖는 자료(=변수)의 계층화가 필요한 경우 사용. 상속의 일종1234public class HelloWorld { public class Korean {...} // 일반 inner class public static class English {...} // static inner class}Colored by Color Scriptercs 객체 ---> 클래스 객체 --> 클래스 - 상속, 은닉, 다형 - 추상화, 인터페이스 폴더 단위로 구분 --> 패키지 패키지 압축 --> *.jar --> 라이브러리 다른 사람이 라이브러리를 자신의 이클립스에 설정해서그 안의 기능을 활용할 ..
SingleTone패턴프로그램 내의 여러 곳에서 반복적으로 사용되어야 하는 객체에 대해 전역적인 범위를 갖도록 객체를 생성하고, 이 객체를 여러 곳에서 공유하기 위한 클래스 작성 패턴1234567891011121314151617181920public class HelloWorld { private static HelloWorld current; // 스스로의 객체를 static으로 선언 public static HelloWorld getInstance() { if current == null) { // 선언된 객체의 중복 할당을 방지 current = new Helloworld(); } return current; } public static void freeInstance{ current = null;..
Static클래스를 설계할 때, 멤버변수 중 모든 객체에서 공통적으로 사용해야 하는 값.123456public class Article { // 이 클래스에서 생성되는 모든 객체가 공유하는 값 private static int count; // 이 클래스에서 생성되는 객체들이 고유하게 갖는 값 private int title;}cs 컴퓨터 메모리상의 위치 - 컴퓨터의 메모리는 프로그램이 실행될 때 고정영역와 동적영역으로 구분되어 진다.- static은 고정영역에 생성되기 때문에 프로그램 실행시부터 종료시까지 항상 존재하는 값이 된다.- 일반 변수들은 {...} 영역안의 수행이 종료되면 메모리에서 삭제된다. static 값에 대한 접근 방법static은 객체가 생성됨과 상관 없이 무조건 존재하기 때문에 객..
인터페이스- 추상메서드만을 갖는 형태. - 클래스간의 상속은 1:1만 가능하지만 인터페이스는 다중상속이 가능하다.- 구현해야 할 기능들을 분류별로 미리 정의하는 개념. 123456789101112131415public interface Hello { public void foo();} public interface world { public void bar();} public class HelloWorld implements Hello, World { @Override public void foo(){...} @Override public void bar(){...}}Colored by Color Scriptercs
추상화 - 상속으로 인해서 발생할 수 있는 소스코드의 여러 형태들을 단일화 시키기 위해 다형성에서 사용되는 기법들을 강제로 사용하도록 소스코드로 설정하는 기법.- 주로 여러 명이 협업하는 경우 많이 사용된다. 추상 메서드 정의- 메서드의 선언만 있고 구현부가 없는 형태- 하나 이상의 추상 메서드를 포함하는 경우 클래스 역시 추상으로 지정되어야 한다.1234public abstract class hello { // 추상클래스로 정의 (abstract) public void foo() {...} // 구현부 있음 public abstract void bar(); // 구현부 없음 = 추상메서드}Colored by Color Scriptercs public class World extends Hello {....
객체 배열같은 종류의 객체를 배열로 묶은 형태 12345678public class Hello {...} Hello[] hello = new Hello[3]; // 배열의 길이 결정 // 각 원소는 인덱스번호로 접근.hello[0] = new Hello();hello[1] = new Hello();hello[2] = new Hello();cs 「같은 상위 클래스를 갖는 서로 다른 클래스의 객체는 부모 클래스 타입의 배열에 여러 객체들을 일괄적으로 포함시킬 수 있다.」 객체 배열은 일반 배열의 특성을 그대로 갖기 때문에,여러 개의 객체를 배열로 묶고 반복문을 활용하여 일괄처리 가능하다.
객체 형변환 암묵적 ↔ 명시적클래스 A와 B가 상속관계에 있을 경우, 자식 클래스의 객체를 부모 클래스의 객체에 대입하는 경우123456789public class A { public void foo(){...} public void bar(){...}} public class B extends A { public void bar(){...} // 부모의 기능을 재정의 public void hello(){...} // 부모와 상관없이 새롭게 추가한 기능}Colored by Color Scriptercs 12B b = new B();A a = b; //암묵적 형변환cs 1A a = new B();cs 형변환이 된 객체는 부모에게 상속받았거나 부모의 기능을 재정의한 것들만 사용가능하다. 위 소스코드에서 he..
다형성(2)오버로드 하나의 클래스 안에서 이름이 동일한 메서드를 두 번 이상 정의하기 위한 방법 오버라이드>상속>부모 기능을 재정의 조건메서드간의 파라미터가 서로 달라야 한다.- 파라미터의 데이터 타입이 다르다 -- 데이터 형이 동일하고 변수의 이름이 다른 경우는 동일한 파라미터로 인식된다.- 파라미터의 개수가 다르다.- 서로 다른 데이터형을 갖는 파라미터들의 전달 순서가 다르다.- 리턴형이 다른 경우는 오버로드의 성립에 아무런 영향을 주지 않는다.12345public void foo(int a) {}public void foo(int a) {}public void foo(int a, int b) {}public void foo(int a, long b) {}public void foo(long a, i..