자바 수업 7일차(21.12.01)

S.KIOH·2021년 12월 1일
0

자바

목록 보기
7/9

Contructor

메소드 오버로딩(Overloading)

  • 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다.
  • 조건 : 메소드의 이름이 같고, 매개변수의 개수나 타입이 다를 때

디폴트 생성자

  • 디폴트 생성자는 생성자가 없을 때 적용
  • 생성자가 있으면 더이상 디폴트 생성자는 적용안됨
  • 생성자는 클래스 이름과 같고 리턴 타입이 없음

this() 생성자

  • 클래스의 생성자 오버로딩시 반복되는 소스를 줄여주는 방법
  • 생성자 내부의 코드 블록 첫줄에 호출함으로써 자신의 다른 생성자를 호출 할 수 있다.
  • 생성자 코드 블록 내부의 this()위에 다른 소스코드가 존재해서는 안된다.

super() 생성자

  • 자신을 가리키는 키워드가 this라면, 부모를 가리키는 키워드는 super
  • super()는 부모의 생성자를 의미
  • 부모의 생성자를 임의로 호출하지 않으면, 부모 class의 기본 생성자가 자동으로 호출
  • 자식에서 부모의 메소드나 필드를 사용할 때도 사용

Swing GUI

JFrame mainFrame = new JFrame(); // 새 윈도우 창 생성

mainFrame.setSize(600, 400); 창 크기 설정
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 창을 닫을 시 프로그램 종료
mainFrame.setVisible(true); 창을 보이게 함

SwingUtilities.invokeLater(() ->{여기 코드 삽입}; 프로그램의 안정성을 위해 권장하는 코드
setLayout(new BorderLayout()); 창에 컴포넌트를 붙이기 위한 레이아웃 설정

JPanel panel = new JPanel(); 패널을 생성
panel.setBackground(Color.GREEN); 패널의 녹색 설정

OOP

  • OOP(Object-Oriented Programming)이란 객체 지향적인 프로그래밍. 즉, C언어같은 절차 지향적인 프로그래밍이 아닌 객체의 관점에서 프로그래밍을 한다는 것
  • OOP는 객체를 기준으로 코드를 나누어 구현
  • 자바의 경우 그 구성 부분 단위가 클래스(자세히 말하자면 클래스는 설계도이고 직접 일을 하는 구현체는 인스턴스)

OOP의 특징

  • 캡슐화 : 하나의 객체에 대해 그 객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는 것
  • 정보은닉 : 유저 정보를 가지고 있는 클래스에서 유저의 정보가 public으로 선언되어 있다면, 누구든 접근해서 유저 정보를 변경할 수 있다. 그렇기 때문에 private로 해서 데이터를 보호해서 접근을 제한해야 한다.
  • 추상화 : 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념
  • 다형성 : 형태가 같은데 다른 기능을 하는 것을 의미(같은 동작이지만 다른 결과물이 나올 때 다형이라고 생각하면 됨)
  • 상속성, 재사용 : 기존 상위클래스에 근거하여 새롭게 클래스와 행위를 정의할 수 있게 도와주는 개념, 코드의 중복을 없애기 위함

추상클래스

  • 추상 클래스는 키워드 abstract를 붙여 표현
  • 추상 메서드를 포함하지 않은 클래스에서도 abstract를 붙여서 추상 클래스로 지정할 수도 있다.
  • 추상클래스는 객체를 만들 수 없다
  • 추상클래스에 선언된 추상메서드는 상속받은 하위 클래스에 강제적으로 구현하도록 한다.

인터페이스

  • 추상 메서드를 가지고 일반 메서드, 멤버 변수를 가질 수 없다.
  • 다른 클래스를 작성하는데 도움을 줄 목적으로 작성
  • 일반 메서드 또는 멤버 변수를 구성원으로 가질 수 없다
  • 모든 멤버 변수는 public static final이어야 하며, 이를 생략할 수 있다
  • 모든 메서드는 public abtract이어야 하며, 이를 생략할 수 있다
  • 인터페이스의 메서드는 구현하는 하위클래스에서 모두 강제적으로 구현되어야 하나 디폴트 메서드는 구현하지 않아도 됨
  • 자바의 인터페이스는 구현 코드가 없으므로 하나의 클래스가 여러 인터페이스를 구현할 수 있음
  • 여러 인터페이스를 구현한 클래스는 인터페이스 타입으로 형 변환 되는 경우 해당 인터페이스에 선언된 메서드만 사용 가능

0개의 댓글