Programming
제네릭(Generic) 제네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시 타입을 체크해주는 기능이다. 객체의 타입을 컴파일 시에 체크해주기 때문에 형변환의 번거로운 작업이 줄고 안정성이 증가한다. public class GenericTest { public static void main(String[] args) { ArrayList arr = new ArrayList(); for(int i =1 ; i 제한 없음
프로그램 오류 프로그램 오류는 크게 2가지로 나뉜다. 1. 컴파일 에러: 컴파일할 때 발생하는 에러 public class ExceptionTest { public static void main(String[] args) { system.out.println("Compile error"); } } 대체로 문법상의 오류로 컴파일 자체가 되지 않는다. 이 경우는 보통 IDE에서 알려주기 때문에 상대적으로 발견하기 쉽고 어렵지 않게 해결할 수 있다. 2. 런타임 에러: 실행할 때 발생하는 에러 public class ExceptionTest { public static void main(String[] args) { System.out.println(args[0]); } } 컴파일 에러와 다르게 IDE에선 확..
추상화(Abstract) 추상: 사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것, 프로그래밍에서 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는 것이다. [JAVA] 클래스와 객체 에서 클래스를 설계도에 비유했다. 추상 클래스는 미완성 설계도로 비유할 수 있다. 클래스의 멤버와 무관하게 추상 클래스는 추상 메서드를 가지고 있기 때문에 추상 클래스라고 불린다. 추상 메서드란 선언부에 abstract 제어자를 붙이고 메서드의 선언부만 존재하고 바디는 존재하지 않는 메서드를 말한다. //추상 클래스 abstract class Abstract{ String a; abstract void print(); String getA() { return a; } } 추상 클래스는..
다형성(Polymorphism) 다형성이란 상속 관계에 있는 객체들 중 상위 클래스의 참조변수가 하위 클래스의 인스턴스를 참조할 수 있는 성질이다. class Parent { void print(){ System.out.println("Parent"); } } class Child extends Parent { void print() { System.out.println("Child"); } void childDoStudy() { System.out.println("Child do study"); } } public class PolymorphismTest { public static void main(String[] args) { Parent p1 = new Parent(); Child c1 = new..
캡슐화(Encapsulation) 특정 객체 안에 관련된 속성과 기능을 하나의 캡슐(capsule)로 만들어 데이터를 보호하는 것 캡슐화는 데이터를 보호하는 목적으로 만들어졌다. 즉, 캡슐화는 정보 은닉이라고 정리할 수 있다. 자바는 캡슐화의 수단으로 접근제어자로 데이터를 보호, 은닉하고 getter와 setter 메서드를 사용해서 data에 접근한다. 1. 접근제어자 접근제어자는 멤버나 클래스에 사용하고 외부에서 접근하지 못하도록 제한한다. 접근제어자는 클래스, 멤버변수, 메서드, 생성자에 사용된다. private : 같은 클래스 내에서만 접근 가능 default : 같은 패키지 내에서 접근 가능 protected : 같은 패키지, 다른 패키지의 하위 클래스에서 접근 가능 public : 모든 곳에서 ..
상속(Inheritance) 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것. 상속을 활용하여 프로그래밍하면 코드의 중복을 줄이고 재사용성을 높여 유지보수에 기여한다. 상속받는 방법 class Parent{} class Child extends Parent{} 상속받는 방법은 간단하다. 상속받을 클래스의 이름 뒤에 extends 키워드와 상위 클래스의 이름을 적어주면 된다. 상위 클래스 : Parent 하위 클래스 : Child class Parent { int x = 1; int y = 2; static void print(){ System.out.println("hello"); } } class Child extends Parent { void printChild() { System.out.p..
생성자(Constructor) 생성자는 인스턴스를 생성하는 역할을 한다. 즉, 생성자는 인스턴스의 초기화 메서드라고 볼 수 있다. 생성자는 메서드와 유사하게 생겼지만 return이 없다. 이때 메서드는 return 이 없다고 void를 명시하지만 생성자는 void도 적어주지 않는다. 생성자의 조건 생성자의 이름과 클래스의 이름이 같아야 한다. 생성자는 리턴 값이 없다. className(parameter) { 내용 } 기본 생성자(Default Constructor) 앞에서 생성자는 인스턴스의 초기화 메서드라고 했다. 그런데 클래스 안에 생성자를 만들지 않아도 프로그램은 제대로 수행이 된다. 그 이유는 컴파일러가 클래스에 생성자가 없으면 기본 생성자를 만들어 주기 때문이다. 다음과 같이 만들고 프로그램을..
자바 클래스의 선언 위치에 따른 변수 인스턴스 변수(Instance variable, iv) 클래스 변수(Class variable, cv) 지역 변수(Local variable, lv) 클래스의 변수는 위와 같이 세 가지로 구분할 수 있다. 그중 static 키워드가 붙는 변수를 클래스 변수라고 한다. 세 변수에 대한 정의는 다음과 같다. class Variable { int iv = 0; //인스턴스 변수 static int cv = 0; //클래스 변수 void method() { int lv = 0; //지역 변수 } } 1. 인스턴스 변수(Instance variable, iv) 인스턴스 변수는 클래스 영역에 선언되고 인스턴스가 생성될 때 만들어진다. 2. 클래스 변수(Class variable..
클래스와 객체의 정의 클래스(Class) : 객체를 정의하는 설계도나 틀 객체(Object) : 클래스에 정의된 것이 메모리에 할당된 것 클래스와 객체의 관계를 설계도와 제품으로 비유할 수 있다. 제품의 설계도가 제품 자체가 될 수 없는 것처럼 클래스도 객체 그 자체가 되지는 못한다. (TV 설계도 - TV의 관계로 이해하면 이해하기 쉽다.) 인스턴스 객체와 같이 자주 쓰는 용어로 인스턴스(Instance)가 있는데 인스턴스는 클래스로부터 만들어진 객체를 인스턴스라고 한다. 즉, 객체는 인스턴스를 포괄하는 넓은 의미를 가지고 인스턴스는 어떤 클래스로부터 생성된 것인지 구체적인 의미를 갖고 있다. 인스턴스(Instance) : 클래스로부터 만들어진 객체 인스턴스화(Instantiate) : 클래스로부터 객..