JAVA
-
[JAVA] Object Class 1편 equals hashCode toString clone 메서드JAVA 2022. 8. 4. 12:02
1. Object Class Object는 모든 클래스의 최고 조상으로 11개의 메서드를 가지고 있습니다. protected Object clone( ) : 객체 자신의 복사본을 반환한다. 오버 라이딩을 통해 접근제어자를 public으로 바꿔줘야 한다. public boolean equals(Object obj) : 객체 자신과 객체 obj가 같은 객체인지 알려준다. 참조 변수에 저장된 주소를 비교한다. 오버 라이딩을 통해 주소가 아닌 멤버 비교도 할 수 있다. equals 메서드를 오버 라이딩하면 hashCode 메서드도 오버 라이딩해줘야 한다. (중요) equals 메서드의 결과가 true이면 두 객체의 해시 코드는 같아야 하기 때문입니다. protected void finalize( ) : (거의 ..
-
[JAVA] 예외처리JAVA 2022. 8. 3. 23:04
1. 에러의 종류와 정의 컴파일 에러(compile-time error) : 컴파일할 때 발생하는 에러 (고치기 전까지는 실행 불가) 컴파일러가 하는 일 구문 체크 번역 최적화 생략된 코드 추가 (예시 : 생성자 super) 런타임 에러 : 실행 시 발생하는 에러 (런타임 에러 발생 시 프로그램 비정상 종료) 에러(Error) : 실행 중 발생할 수 있는 심각한 오류 예외(Exception) : 실행 중 발생할 수 있는 미약한 오류 예외처리(try - catch)가 가능하다. 프로그램의 비정상 종료를 막고 정상적인 실행상태를 유지하는 것 예외(Exception)의 종류와 구분 Exception과 Exception의 자식 클래스들 (예외 처리 필수) 프로그램 외적인 요인으로 발생하는 예외 IOExcepti..
-
[JAVA] 객체지향 추상클래스 인터페이스 내부클래스JAVA 2022. 8. 3. 11:19
1. 추상 클래스(abstract class) 아직 사용할 수 없는 미완성된 클래스 인스턴스 생성 불가능하다. 추상 메서드를 포함하고 있는 클래스 선언 부만 작성된 메서드 꼭 필요하지만 자식마다 다르게 구현될 것으로 예상되는 경우에 사용 정상적인 메서드는 추상 메서드를 호출할 수 있다. 호출할 때 필요한 건 선언 부이기 때문이다. 다른 클래스가 상속을 통해 추상 메서드를 완성해서 사용할 수 있게 도움을 주는 목적으로 작성한다. 사용 목적은 여러 클래스에 공통적으로 사용될 수 있는 부분을 뽑아서 추상 클래스로 만든다. abstract class player{ // 추상 클래스 int x; player(){ // 추상 클래스도 생성자는 있어야 한다. x = 0; } abstract void play(int ..
-
[JAVA] 객체지향 2편 제어자 다형성JAVA 2022. 8. 2. 10:17
1. 제어자 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다. 제어자는 크게 접근 제어자와 그 외 제어자로 나뉜다. 접근 제어자 : public, protected, default, private 그 외 제어자 : static, final, abstract, native, transient, synchronized, volatile, strictfp 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있지만 접근 제어자는 단 하나만 사용이 가능하다. 1-1. 그 외 제어자에 대해 알아보기 static - 공통적인 static이 사용될 수 있는 곳은 멤버 변수, 메서드, 초기화 블록이다. 멤버 변수 모든 인스턴스에 공통적으로 사용되는 클래스 변수가 된다. 클래스 변수는 인스턴스를 생성..
-
[JAVA] 객체지향 2편JAVA 2022. 8. 1. 12:57
1. 상속 기존 클래스를 재사용하여 새로운 클래스를 만드는 것이다. 상속으로 만들어진 클래스들은 부모 자식의 관계가 생긴다. 자식은 부모의 모든 멤버를 상속받게된다. 단, 생성자와 초기화 블록은 제외 해결방법 : 부모의 생성자를 호출할 수 있는 생성자 super() 사용 자식의 멤버개수는 부모의 멤버개수보다 작거나 많다. 부모 클래스의 변경은 자식 클래스에게 영향을 미치지만 자식 클래스의 변경은 부모 클래스에 아무런 영향을 미치지 못한다. Java는 단일상속만을 허용한다. 두개 이상의 클래스를 가져오고 싶다면 비중이 높은 클래스는 상속을 하고 나머지는 포함관계를 가지면 됩니다. 부모가 없는 클래스는 자동으로 (최상위 클래스)Object 클래스를 상속받고 있습니다. 이런 이유로 모든 클래스는 11개의 매서..
-
[JAVA 공부 6일차] static, final, abstract, 접근 제어자 알아보기JAVA 2022. 7. 27. 16:16
1. static class staticTest{ static int width; // 클래스(static) 변수 static int height; // 클래스(static) 변수 static { // 클래스 초기화 블록 (복잡) width = 100; height = 200; } static int max (int a, int b){ // 클래스(static) 매서드 return a > b ? a : b; } } 만약 이런 클래스가 있다면 여기 있는 모든 멤버는 인스턴스를 생성하지 않고도 사용할 수 있습니다. static의 경우 파일이 실행될 때 메모리에 올라가며 몇 개의 인스턴스를 생성하더라도 최초 1회만 초기화됩니다. static은 인스턴스 멤버에만 사용할 수 있습니다. 2. final final ..
-
[JAVA 공부 6일차] 객체지향 Part 4JAVA 2022. 7. 27. 12:05
1. 상속 public class object_oriented_2 { public static void main(String[] args) { SmartTv stv = new SmartTv(); stv.channel = 10; // 상속받은 멤버 stv.channelUp(); // 상속받은 멤버 System.out.println(stv.channel); stv.caption = true; stv.displayCaption("Hello JAVA"); } } class Tv2{ // 멤버 7개 String color; // 인스턴스 변수 1 boolean power; // 인스턴스 변수 2 int channel; // 인스턴스 변수 3 static int cv; // 클래스 변수 (static 변수) / 공..
-
[JAVA 공부 5일차] 객체지향 Part 3JAVA 2022. 7. 27. 09:20
1. 변수의 초기화 지역 변수는 꼭 사용 전에 수동 초기화해주어야 한다. 인스턴스 변수, 클래스 변수(static 변수)의 경우 자동 초기화가 된다. int, long, short, byte, float, double 타입의 경우 타입에 맞게 0으로 초기화된다. boolean 타입의 경우 false로 초기화된다. char 타입의 경우 '\u0000' (공백 1칸)으로 초기화된다. 참조형 변수는 null로 초기화된다. 1. 명식적 초기화 ( = ) 간단한 초기화할 때 많이 사용된다. class Car{ int door = 4; // 기본형 변수의 초기화 Engine e = new Engine(); // 참조형 변수의 초기화 } 2. 초기화 블록 복잡한 초기화를 할 때 많이 사용된다. 인스턴스 초기화 블록 ..