인터페이스의 타입변환 및 상속 인터페이스는 클래스와 마찬가지로 상속이 가능하다.클래스와 달리 인터페이스는 다중 상속이 가능하다. 다음은 인터페이스 상속의 예이다. Person.javapublic interface Person {public void setName(String name);public String getName();} Gender.javapublic interface Gender {public void setGender(boolean male);public String getGender();} Student.javapublic interface Student extends Person, Gender{public void setSchool(String school);public String g..
익명 구현 객체 (Anonymous class) 우린 객체를 생성할 떄 마다, 늘 클래스를 하나씩 생성했다.하지만 한번쓰고 버릴객체 객체 전부를 클래스형태로 만들면 소스파일들이 너무 많아질 뿐 아니라, 매우 비효율적이다.그 비효율성을 개선하기 위해 자바에서 제공하는 것이 바로 '익명 구현 객체'이다. 익명 구현 객체는 한번 쓰고 버릴 일회용 객체라고 생각하면 편리하다.익명 구현 객체는 UI 프로그래밍에서 매우 많이 활용되므로, 코드를 잘 익혀두어야 한다. 익명 구현 객체는 인터페이스가 존재해야 사용가능하다.익명구현 객체 구조는 다음과 같다. 인터페이스 변수이름 = new 인터페이스() { //메소드 }; 익명구현 객체는 선언과 동시에 실행된다.즉, 익명구현 객체는 선언문이자 실행문이므로, 끝에 세미콜론을..
Mail Clilent.java import javax.net.ssl.*;import javax.xml.bind.DatatypeConverter;import java.io.*;import java.net.Socket;import java.util.Base64;import java.util.Base64.Decoder;import java.util.Scanner;import static java.lang.System.exit; public class mailClient { private int imapPort=993; // ssl/tls 지원 imap port number private int smtpPort=465; // ssl/tls 지원 smtp port number private String imap..
인터페이스(Interface) JAVA에서 인터페이스는 객체의 사용 방법을 정의한 타입이다.일상생활으로 치면 일종의 가이드라인이라고 볼 수 있다.일전에 추상클래스를 설계도라고 표현한 적이 있는데, 인터페이스도 동일한 역할을 한다.추상클래스는 추상클래스는 상속으로 추가할 수 있으며, 단일상속만 가능하다.하지만, 인터페이스는 다중상속이 가능하다는 것이 추상클래스와 인터페이스의 가장 큰 차이점이다. 인터페이스는 개발 코드와 객체가 서로 통신하는 접점 역할을 하고 있다.즉, 객체에서 메소드들의 이름과 매개변수들을 미리 저장해놓고 있다가 개발코드에게 어떤 메소드가 필요한지, 해당 기능을 하는 메소드의 이름은 무엇인지를 알려주는 역할을 한다. 그러므로, 인터페이스를 사용하게 되면, 코드의 표준화가 가능하다.즉, 같..
추상클래스(Abstract Class) 클래스는 객체를 직접 생성할 수 있는 실체 클래스와 추상 클래스가 존재한다.우리가 만들어왔던 클래스는 전부 실체 클래스이다.그럼 추상클래스는 무엇일까? 실체 클래스는 실체 클래스들의 공통 특성을 추출해서 선언한 클래스이다.추상클래스와 실체 클래스는 상속의 관계를 가지고 있으며( 추상클래스 - 부모 / 실체 클래스 - 자식 ), 실체 클래스는 추상 클래스의 모든 특성을 물려받고, 추가적인 필드와 메소드를 가질 수 있다. 추상 클래스는 실체클래스의 설계도와 같은 역할을 한다.그러므로 추상 클래스는 객체를 직접 생성하지는 못한다.즉, new 연산자를 사용하여 인스턴스를 생성시키지 못한다는 것이다. 추상 클래스는 다음과 같은 방법으로 선언한다. public abstract..
다형성 다형성은 같은 타입이지만, 실행 결과를 다양한 객체에서서 이용할 수 있는 성질을 뜻한다.다형성은 객체 지향 프로그래밍에서 굉장히 중요한 성질 중 하나이다.자바에서는 다형성을 보장하기 위해 타입 변환을 허용한다. 타입 변환 타입 변환은 총 두가지가 존재한다.자동 타입 변환(Promotion), 강제 타입 변환 (Casting) 1. 자동 타입 변환(Promotion) 자동 타입 변환은 말그대로 프로그램 실행 도중 자동적으로 타입이 변환되는 것을 말한다.자동 타입 변환은 보통 부모 타입에 자식 객체가 대입되는 것을 뜻한다.자식은 부모의 특징과 기능을 상속 받았기 때문에 동일 취급 될 수 있다는 것이 자동 타입 변환의 개념이다. 자동타입 변환해도 오버라이딩 된 메소드 호출 // promotion.met..
final 클래스와 메소드 앞에서 포스팅했던 final 필드에 대한 설명을 기억하는가?final필드는 초기값이 저장되면 프로그램 실행 도중 수정이 불가능하여 변화되지 않을 필드를 보통 final필드로 선언한다고 설명했을 것이다. 클래스와 메소드도 마찬가지로 final로 선언될 수 있다.final 키워드를 붙인 클래스는 최종적인 클래스가 되고, final 키워드를 붙인 메소드는 최종적인 메소드가 된다.즉, final 클래스는 부모클래스가 될 수 없어 자식 클래스를 가질 수 없으며, final 메소드는 자식클래스에서 오버라이딩 할 수 없다. 예를 들어, final class ClassName{ } ClassName 클래스는 부모 클래스가 될 수 없다. Parent.javapublic class Parent{..
상속(Inheritance) 일상생활에서 상속은 부모가 자식에게 무언가를 물려주는 행위를 말한다.객체 지향 프로그램에서도 그 의미는 같다.객체 지향 프로그램에서는 부모클래스가 자식클래스에게 멤버(필드, 메소드)들을 물려주는 것을 뜻한다. 상속을 사용하게 되면, 부모클래스에 있는 필드와 메소드를 자식클래스에 똑같이 쓸 필요가없다.그러므로, 중복된 코드 방지하고, 개발 시간을 줄여준다. 상속에는 몇가지 주의할 점이 있다.자바는 다중 상속을 허용하지 않으므로, 단 하나의 부모 클래스만 상속할 수 있다.부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속대상에서 제외된다.부모클래스와 자식클래스가 다른 패키지에 존재한다면 default 접근 제한을 갖는 필드와 메소드도 상속 대상에서 제외된다. 클..
Getter와 Setter 객체 지향 프로그래밍에서는 객체의 무결성을 보장한다.즉, 객체의 데이터를 외부에서 직접적으로 접근하여 마음대로 읽고 변경할 수 없다는 것이다.외부에서 데이터에 접근하려면 메소드를 통해야만 한다.이러한 역할을 하는 메소드가 Setter이다.Setter 메소드의 이름은 'set + 필드이름'으로 쓰는 것이 관례이다. Setter는 매개값을 검증해서 유효한 값만을 데이터로 저장하는 역할을 한다.예를 들어, 사람의 키를 데이터로 저장하는 객체가 있다고 가정하자.그러나, 사용자가 데이터에 실수로 음수값을 입력했다.그렇다면 객체의 무결성은 깨지게 된다. 그러므로, 우리는 Setter를 다음과 같이 코딩할 수 있다. public void setHeight(double height){ if(..