Java/객체지향프로그래밍 (11) 썸네일형 리스트형 [Java] 인터페이스(interfce) - 코딩밥상 인터페이스란? 일종의 추상클래스로 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상 메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다. 인터페이스도 추상클래스처럼 완성되지 않은 불완전한 것이기 때문에 그 자체만으로 사용되기 보다는 다른 클래스를 작성하는데 도움 줄 목적으로 작성된다. 인터페이스의 작성 클래스를 작성하는 것과 같은데 다만 키워드로 class 대신 interface를 사용한다는 것만 다르다. 그리고 interface에도 접근제어자로 public 또는 default를 사용할 수 있다. interface 인터페이스이름{ public static final 타입상수이름 = 값;.. [Java] 추상화(abstract) - 코딩밥상 추상화란? 상속이 자손 클래스를 만드는데 조상 클래스를 사용하는 것이라면, 이와 반대로 추상화는 기존의 클래스의 공통부분을 뽑아내서 조상 클래스를 만드는 것이라고 할 수 있다. 추상화를 구체화의 반대되는 의미로 이해하면 된다. 즉 상소계층도를 따라 내려 갈수록 세분화되며, 올라갈수록 공통요소만 남게 된다. 추상화 : 클래스간의 공통점을 찾아내서 공통의 조상을 만드는 작업 구체화 : 상속을 통해 클래스를 구현, 확장하는 작업 추상 클래스 추상 클래스라는 것은 단지 추상 메서드를 포함하고있다는 의미이다. 따라서 추상클래스로 인스턴스는 생성할 수 없다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 추상클래스 자체로는 클래스로서의 역할을 다 못하지만, 새로운 클래스를 작성하는데 있어서 바탕.. [Java] 다형성(polymorphism) - 코딩밥상 다형성이란? 객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 즉 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다. 단, 이처럼 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 경우 자손클래스에만 있는 멤버변수는 사용할 수 없다. 반대로 자손 클래스 타입의 참조변수로 조상 클래스 타입의 인스턴스를 참조하는것은 가능할까? 불가능하다. 실제 인스턴스(조상)의 멤버 변수보다 참조변수(자손)가 사용할 수 있는 멤버 개수가 더 많기 때문이다. 즉 자손타입의 참조변수로 조상타입의 인스턴스를 참조하는 것은 존재하지 않는 멤버를 사용.. [Java] 제어자(modifier) - 코딩밥상 제어자란? 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부가한다. 제어자는 클래스나 멤버변수와 메서드에 주로 사용되며, 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능하다 단, 접근 제어자는 한번에 네 가지 중 하나만 선택해서 사용할 수 있다. static - 클래스의, 공통적인 전에 배웠듯이 인스턴스변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스변수(static멤버변수)는 인스턴스에 관계없이 같은 값을 갖는다. 그 이유는 하나의 변수를 모든 인스턴스가 공유하기 때문이다. static이 붙은 멤버변수와 메서드, 그리고 초기화 블럭은 인스턴스가 아닌 클래스에 관계된 것이기 때문에 인스턴스를 생성하지 않고도 사용할 수 있다. 즉 인스턴스와 .. [Java] 오버라이딩(overriding) - 코딩밥상 오버라이딩이란? 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속 받은 메서드를 자손 클래스 자신에 맞게 변경해야하는 경우에 이를 활용한다. 오버라이딩 조건 자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와 -이름이 같아야 한다. -매개변수가 같아야 한다. -반환타입이 같아야 한다. 즉 오버라이딩은 메서드의 내용만을 새로 작성하는 것이므로 메서드의 선언부는 조상의 것과 완전히 일치해야 한다. 다만 접근 제어자(access modifier)와 예외(exception)는 제한된 조건 하에서만 다르게 변경할 수 있다. - 접근 제어자 : 조상 클래스의 메서드보다 좁은 범위로 변경 할 수 없다. - 예외 : 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없.. [Java] 상속(Inheritance) - 코딩밥상 상속의 정의와 장점 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 통해서 클래스를 작성하면 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 이러한 특징은 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여한다. 자바에서는 'extends'를 사용하여 상속하는데, 상속해주는 클래스를 '조상 클래스'라 하고 상속 받는 클래스를 '자손 클래스'라고 한다. 자손 클래스는 조상 클래스의 모든 멤버를 상속받는다(생성자와 초기화 블럭은 상속되지 않는다). 따라서 만약 조상 클래스에 멤버 변수를 추가하면 자손 클래스에도 자동적으로 멤버 변수가 추가되는것과 같다.. [Java] 초기화 블럭(initialization block) - 코딩밥상 초기화 블럭(initialization block)이란? 클래스의 멤버변수의 초기화 방법에는 여러가지가 있다. 1. 명시적 초기화 2. 생성자 3. 초기화 블럭 1. 명시적 초기화는 기본적인 방법으로 변수를 선언과 동시에 값을 넣어 초기화 하는 방법이다. 2. 생성자를 통한 초기화는 앞 생성자에서 충분히 다루어 이해할 수 있었다. 3. 이번에 정리할 것은 초기화 블럭인데, '클래스 초기화 블럭'과 '인스턴스 초기화 블럭' 두 가지 종류가 있다. 전자는 클래스변수의 초기화에, 후자는 인스턴스변수의 초기화에 사용된다. 초기화 블럭을 작성하려면, 인스턴스 초기화 블럭은 단순히 클래스 내에 블럭{ }을 만들고 클래스 초기화 블럭은 앞에 static만 붙여주면 된다. 이렇게 생성한 초기화 블럭 안에는 조건문,반복.. [Java] 생성자(Constructor) - 코딩밥상 생성자란? 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드' 이다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다. 생성자의 조건은 다음과 같다. 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. 인스턴스를 생성할 때의 과정을 보면 클래스명 참조변수 = new 클래스명(); 연산자 new에 의해서 메모리(Heap)에 인스턴스가 생성된다. 생성자가 호출되어 수행된다. 연산자 new의 결과로 생성된 인스턴스의 주소가 반환되어 참조변수에 저장된다. 즉 연산자 new가 인스턴스를 생성하는 것이지, 생성자가 인스턴스를 생성하는 것이 아니다. 생성자라는 용어 때문에 오해하기 쉬운데, 생성자는 단순히 .. 이전 1 2 다음