전체 글
-
Java - 기본 클래스(Objectd의 equals()메서드)2개발언어/JAVA 2023. 11. 4. 16:06
equals( )메서드 equal()메서드의 원래 기능은 두 인스턴스의 주소 값을 비교하여 boolean 값(ture/false)을 반환해주는 것이다. 주소값이 같다면 당연히 같은 인스턴스이다. 그런데 서로 다른 주소 값을 가질 때도 같은 인스턴스라고 정의할 수 있는 경우가 있다. 따라서 논리적 동일성을 구분할 때 equals()메서드를 재정의 해서 사용한다. 물리적 동일성을 가질때 Student studentLee = new Student(100,"이진희"); Student studentLee2 = new studentLee; //주소 복사 위 코드 와 같이 Student 인스턴스를 두개 생성하면 생성된 인스턴스를 가리키는 참조 변수(studentLee)를 다른 변수(studentLee2)에 복사한다...
-
Java - 기본 클래스(Object 클래스, Object의 toStirng()메서드)1개발언어/JAVA 2023. 11. 4. 15:02
모든 클래스이 최상위 클래스 Object 컴파일 과정에서 오른 쪽과 같이 extends Object가 자동으로 쓰인다. 직접 만드는 커스텀 클래스뿐 아니라 기존 JDK에서 제공하는 클래스도 모두 Object클래스에서 상속을 받는다. 모든 클래스가 Object클래스를 상속받았으므로 Object의 메서드를 사용할 수 있고, 재정의할 수도 있고, Object형을로 반환할 수도 있다. 자바로 프로그래밍을 하다 보면 클래스가 Object형으로 변환되는 경우도 있고, Object에서 원래 클래스형으로 다운 캐스팅되는 경우도 있다. 주로 사용되는 Object 메서드 메서드 설명 String toString( ) 인스턴스를 문자열로 표현하여 반환한다. 재정의하여 인스턴스에 대한 설명이나 특정 멤버 변수 값을 반환한다...
-
Java - 인터페이스(인터페이스와 다형성)2개발언어/JAVA 2023. 11. 4. 09:32
인터페이스와 다형성 인터페이스의 역할 인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는지 미리 알려주는 명세(specification)또는 약속의 역할을 한다. 예를 들어 Abc 인터페이스를 구현한 A클래스가 있다. 이 클래스를 사용하는 Z프로그램이 있다고 가정하자. Abc 인터페이스에는 구현할 추상 메서드가 모두 선어되어 있고, 어떤 매개변수가 사용되는지, 어떤 자료형 값이 반환되는지 선언되어 있다. 즉 Z프로그램에서는 A클래스의 구현 코드 전체를 살펴보지 않고 Abc인터페이스 선어부만 봐도 이 A클래스를 어떻게 사용할지 알 수 있는 것이다. Abc abc; abc = new A(); abc = new B(); abc = new C(); 만약 Z프로그램에서 Abc 인터페이스를 구현한 다른 클래스..
-
Java - 인터페이스(인터페이스란?)1카테고리 없음 2023. 11. 4. 08:31
인터페이스란? 구현 코드가 없는 인터페이스 인터페이스(interface)는 클래스 혹은 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 한다. 인터페이스는 추상메서드와 상수로만 이루어져있다. 구현된 코드가 없기 때문에 당현히 인터페이스로 인스턴스를 생성할 수 도 없다. 인터페이스 만들기 package interfaceex; public interface Calc{ //인터페이스에서 선언한 변수는 컴파일 //과정에서 상수로 변환된다. double PI = 3.14; int ERROR = -9999999; //인터페이스에서 선언한 메서드는 컴파일 //과정에서 추상 메서드로 변환된다. int add(int num1, int num2); int substract(int num1, int num2); int..
-
Java - 추상 클래스(final 예약어)5카테고리 없음 2023. 11. 4. 07:41
final 예약어 사용 위치 설명 변수 final 변수는 상수를 의미한다. 메서드 final 메서드는 하위 클래스에서 재정의할 수 없다.(템플릿 메서드) 클래스 final 클래스는 상속할 수 없다. 상수를 의미하는 final 변수 package finalex; public class Constant{ int num = 10; //상수선언 final int NUM = 100; public static void main(String[] args){ Constant cons = new Constant(); cons.num = 50; //오류 발생 ⛔cons.NUM = 200; //상수에 값을 대입하여 오류 발생 System.out.println(cons.num); //50 System.out.println(c..
-
Java - 추상 클래스(템플릿 메서드 응용하기)4개발언어/JAVA 2023. 11. 4. 07:05
템플릿 메서드 응용하기 클래스의 기능과 관계 if(level == beginner) //beginner 기능구현 else if(level == advanced) //advanced 기능구현 else if(level == super) //super 기능구현 간단하게 생각하면 Player 클래스를 만들고 현재 player의 레벨에 따라 if 조건문으로 코드를 구현하면 된다. 의사 코드(pseudo code)로 작성하면 위 코드와 같다. 그런데 위와 같이 구현하면 level 수만큼 if문이 증가해서 유지보수가 어려운 코드가 된다. 현재는 level이 3개 밖에 없지만, 기능이 추가되어 level이 7개 정도로 늘어난다면 각 level마다 if-else if문을 7개씩 코딩해야 하기 때문이다. 클래스 설계하기 ..
-
Java - 추상 클래스(템플릿 메서드)3개발언어/JAVA 2023. 11. 3. 16:25
추상 클래스와 템플릿 메서드 '템플릿(template)'이란 용어를 사전에서 찾아보면, 틀이나 견본을 뜻한다. 틀이 있는 메서드라는 의미이다. 템플릿 메서드는 추상 클래스를 사용하여 구현할 수 있다. package template; public abstract class Car{ public abstract void drive(); public abstract void stop(); public void startCar(){ System.out.println("시동을 켭니다."); } public void turnOff(){ System.out.println("시동을 끕니다."); } //템플릿 메서드 final public void run(){ startCar(); drive(); stop(); tur..
-
Java - 추상 클래스(추상 클래스 만드는 이유)3개발언어/JAVA 2023. 11. 3. 15:29
추상 클래스 만드는 이유 package abstractex; public class ComputerTest{ public static void main(String[] args){ //오류 발생 ⛔Computer c1 = new Computer(); Computer c2 = new DeskTop(); //오류 발생 ⛔Computer c3 = new NoteBook(); Computer c4 = new MyNoteBook(); } } Computer 클래스형으로 인스턴스를 4개 생성했다. 그런데 코드를 보면 Computer와 NoteBook에서 오류가 난다. 오류 메시지를 확인해보면 Computer클래스와 NoteBook클래스를 인스턴스로 생성할 수 없다고 나온다. 추상 클래스는 인스턴스로 생성할 수 없다..