반응형

추상클래스(abstract class)

상속관계에서 하위 클래스들에게 부모의 메소드를 반드시 사용하도록 강제할 수 있다.
따라서 통일성 및 일관성이 지켜질 수 있으며
결과적으로 재사용성 및 유지보수가 향상되고 관리하기도 쉬워진다. 


■ 구현 가능한 구성요소

  • 인스턴스 변수
  • 일반 메서드
  • 생성자
  • 추상 메서드

■ 특징

  • 미완성 클래스이다.
  • 추상 메서드를 포함할 수 있기 때문에 객체생성이 불가능하다.
  • *추상 메서드가 포함되지 않아도 된다.
  • 상속관계에서 하위 클래스에서 추상 클래스의 추상 메서드를 재정의 해야한다.
  • 단일상속만 지원한다.

※ 추상 메서드 특징 : abstract 키워드를 갖고 선언부는 있지만 구현부가 없는 메서드


1. 추상 클래스

※ 구성

  • 인스턴스 변수
  • 생성자
  • 일반 메서드
  • 추상 메서드

2. 추상클래스를 상속받는 자식 클래스

※ 구성

  • 생성자
  • 오버라이딩된 메서드

3. main 메서드

- 자식 클래스의 객체 생성(인스턴스화)은 부모 클래스의 객체가 생성이 선행되어야 하기 때문에

부모 클래스의 생성자가 먼저 호출되고, 자식클래스의 생성자가 호출된다.

4. 출력결과


SOURCE CODE

 

hyunmin94/JavaExam

Contribute to hyunmin94/JavaExam development by creating an account on GitHub.

github.com

반응형
반응형

DownCasting

상속관계의 두 클래스를 기준으로 자식클래스의 참조 변수가 부모클래스의 객체를 참조하는것을 의미한다. 

다운캐스팅의 경우 형변환 기호를 사용하면 문법상에 문제가 없는것처럼 보이지만 실질적으로는 런타임오류가 발생한다.

이유는 단순하다. 비교적으로 자식클래스의 구성은 부모클래스의 구성보다 방대할 수 밖에 없다. 자식클래스의 참조변수가 부모클래스의 객체를 참조할 경우에 부모클래스의 구성요소에는 접근이 가능하지만, 자식클래스에 존재하는 인스턴스 변수나 메소드의 접근이 불가능하기 때문이다.

따라서 JVM은 기본자료형과 다르게 참조변수에 경우 정확한 형변환 추리가 불가능하다 판단하여 런타임 에러를 발생시킨다. 하지만 업캐스팅을 선행하고 다운캐스팅한다면 문제없이 캐스팅이 가능하다.


1. 부모 클래스 

※ 구성

  • 생성자
  • 일반메소드(parentMethod)

2. 자식 클래스

※ 구성

  • 생성자
  • 일반메소드(childMethod)

3. main 메소드

※ 형식 

1) 자식클래스 참조변수 = (자식클래스) new 부모클래스(); 

 

주의!)

1) 형변환 기호 생략 불가능

2) 업캐스팅이 선행되지 않을경우 런타임 에러 발생

4. 출력결과


SOURCE CODE

 

hyunmin94/JavaExam

Contribute to hyunmin94/JavaExam development by creating an account on GitHub.

github.com

반응형
반응형

■ UpCasting

상속관계의 두 클래스를 기준으로 부모클래스의 참조 변수가 자식클래스의 객체를 참조할 수 있는것을 의미한다. Java의 다형성을 가장 잘 설명하는 특징이다.


1. 부모 클래스 

※ 구성

  • 생성자
  • 일반메소드(parentMethod)

2. 자식 클래스

※ 구성

  • 생성자
  • 일반메소드(childMethod)

3. main() 메소드

※ 형식 

1) 부모클래스 참조변수 = (부모클래스) new 자식클래스(); 

- 형변환 기호 생략 가능 

 

2) 부모클래스 참조변수 = new 자식클래스();

 

주의!)

부모클래스의 참조변수가 자식클래스의 객체를 참조하고 있지만 

직접적으로 자식클래스의 인스턴스변수, 메소드를 호출할 수 있는것은 아니다.

따라서 주석처리된 부분은 에러가 발생한다.

4. 출력결과

상속관계에 있는 자식클래스의 객체생성은 부모클래스의 객체가 생성된 이후에 생성되기 때문에 부모클래스의 생성자가 먼저 호출되고, 자식클래스의 생성자가 호출된다.


SOURCE CODE

 

hyunmin94/JavaExam

Contribute to hyunmin94/JavaExam development by creating an account on GitHub.

github.com

 

반응형
반응형

설치파일이 아닌 압축파일로 이클립스(Eclipse) 설치

※ 다운로드 경로 : https://www.eclipse.org/

 

The Community for Open Innovation and Collaboration | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 375 open source projects, including runtimes, tools and frameworks.

www.eclipse.org


설치 방법

▶ 1. Download 버튼 클릭

▶ 2. Download Package 클릭

▶ 3. 버전 선택 설치

1) 최신 버전 설치시 'Eclipse IDE for Enterprise Java Developers' 클릭

2) 최신 버전이 아닌 다른 버전 설치를 희망하는 경우

▶ 4. Download 버튼 클릭

▶ 5. 설치 완료 후 원하는 경로에 압축 해제

▶ 6. 압축해제를 완료한 폴더에서 eclipse.exe 파일 실행

▶ Ecliplse 설치 완료 !!!

반응형
반응형

■ 가상환경 구축

1. 기존 파이썬 버전

방법) conda create -n 가상환경 이름 anaconda

# 예시
conda create -n tf2 anaconda

2. 파이썬 버전 설정

방법) conda create -n 가상환경 이름 python=파이썬 버전 anaconda

# 예시
conda create -n tf2 python=2.8 anaconda

 가상환경 접속

방법) conda activate 가상환경 이름

# 예시
conda activate tf2

 기본(base) 환경으로 돌아오기 

conda deactivate

 가상환경 삭제

방법) conda remove --name 가상환경이름 --all

# 예시
conda remove --name tf2 --all

반응형
반응형

여러 데이터 비교를 위한 결과 HTML 수정

Jupyter Notebook을 이용하여 두 데이터를 비교해서 확인 하고 싶은 경우가 있다.

물론 두 데이터를 print() 함수와 display() 함수를 이용하여 수직적으로 확인할 수 있겠지만

데이터의 양이 많을 경우 수직적으로 나타내는 데이터는 확인이 어렵다.

아래 작업을 통해 HTML을 수정함으로써 데이터의 양이 많더라도 수평적으로 쉽게 데이터를 비교할 수 있다.


 Source Code

from IPython.display import display_html
def display_side_by_side(*args):
    html_str=''
    for df in args:
        html_str += df.to_html()
    display_html(html_str.replace('table','table style="display:inline"'), raw=True)

 예시) 여러 데이터프레임 결과 비교

반응형

+ Recent posts