본문 바로가기

전체 글83

인터페이스(interface) 인터페이스란? 인터페이스는 추상메서드의 집합이다.  인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가빌 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다. 인터페이스 작성interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수목록);} 인터페이스의 멤버들의 제약사항- 모든 멤버변수는 public static final 이어야 하며, 이를 생략할 수 있다.- 모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있다.  단, sta.. 2024. 5. 31.
추상 클래스(abstract class) 추상 클래스란?클래스가 설계도라면, 추상 클래스란 미완성 설계도라고 할 수 있다. 미완성 설계도로 완성된 제품을 만들 수 없듯이 추상클래스로 인스턴스는 생성할 수 없다. 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 추상클래스는 키워드 'abstract'를 붙이기만 하면 된다. 클래스 선언부의 abstract를 보고 이 클래스에는 추상 메서드가 있으니 상속을 통해서 구현해주어야 한다는 것을 쉽게 알 수 있다. 추상클래스에도 생성자가 있으며, 멤버변수와 메서드도 가질 수 있다. * 추상메서드를 포함하고 있지 않은 클래스에도 키워드 'abstract'를 붙여서 추상클래스로 지정할 수도 있다. 추상메서드가 없는 완성된 클래스라 할지라도 추상클래스로 지정되면 클래스의 인스턴스를 생성할 수 없.. 2024. 5. 31.
다형성(polymorphism) 다형성이란?자바에서 다형성이란 한 타입의 참조변수로 여러 타입의 객체로 참조할 수 있도록 함으로써 조상 클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 하였다.  class Tv{ boolean power; int channel; void power(){} void channelUp(){} void channelDown(){}}class CaptionTv extends Tv{ String text; void caption(){}} Tv와 CaptionTv 클래스가 서로 상속관계에 있을 경우, 다음과 같이 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조하도록 하는 것도 가능하다.Tv t = new CaptionTv(); // 조.. 2024. 5. 31.
제어자(modifier) 제어자란?제어자(modifier)는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있다.접근 제어자public, protected, default, private그           외 static, final, abstract, native, transient, synchronized, volatile, strictfp  staticstatic은 '클래스의' 또는 '공통적인'의 의미를 가지고 있다.  static이 붙은 멤버변수와 메서드, 그리고 초기화 블럭은 인스턴스가 아닌 클래스에 관계된 것이기 때문에 인스턴스를 생성하지 않고도 사용할 수 있다. 인스턴스 메서드와 static 메서드의 근본적인 차이는 메서.. 2024. 5. 31.
Package & import 패키지(Package)란? 패키지란 클래스의 묶음이다. 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다. 그래서 어떤 패키지에 속한 클래스는 해당 디렉토리에 존재하는 클래스 파일(.class)이어야 한다.- 하나의 소스파일에는 첫 번째 문장으로 단 한 번의 패키지 선언만을 허용한다.- 모든 클래스는 반드시 하나의 패키지에 속해야 한다.- 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있다.- 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉토리이다. 패키지의 선언package 패키지명;  import문 소스코드를 작성할 때 다른 패키지의 클래스를 사용하려면 패키지명이 포함된 클래스 이름을 사용해야 한다. 하지만 클래스의 .. 2024. 5. 31.
오버라이딩(overriding) 오버라이딩이란?조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다. 상속받은 메서드를 그대로 사용하기도 하지만 자손 클래스 자신에 맞게 변경해야하는 경우가 많다. 이럴때 조상의 메서드를 오버라이딩한다.*override의 사전적 의미는 '~위에 덮어쓰다(overwrite)'이다. class Point{ int x; int y; Stirng getLocation() { return "x: "+x+", y: "+y; }class Point3D extends Point { int z; String getLocation() { //오버라이딩 return "x: "+x+", y: "+y+", z:"+z; }} 조상클래스로부터 상속 받은 메서.. 2024. 5. 31.