[TIL] JAVA - 6일차

배고픈메꾸리·2021년 1월 26일
0

SSAFY

목록 보기
5/22

JAVA

public class Test{  // public 은 어디서나 쓸 수 있다. (파일명과 클래스명이 동일 할 때)
  public static void main(String[] args){
  	Cup c = new Cup(); // 지역 변수 = 힙영역에 메모리 할당
    System.out.println(c);
  }
}

class P{
	public String name;
    
    public P(){
    }
    
    public P(String name){
    	this.name = name;
    }
}

class Cp extends P{  //(파일명과 클래스명이 다르므로 default만 가능)
    private int size; // encapsulation
    
    public Cup(){ // 생성자
    	this(3); // 3을 가지고 다른 생성자 호출
    	//this.size = 3;
    }
    
    public Cup(int size){
      	super(); // public P 호출 
        //super("zz")   public P(String name) 호출
      	this.size = size;
    }
    
    public int getSize() {
    	return size;
    }
    
    public void setSize(int size){
    	this.size = size;
    }
    
    public String toString(){
    	return "Cup [size : " + size + "name : " + name " ] " ;
    }
    
}

this : 자기 자신의 객체를 가리키는 참조 변수
this() : 자신의 다른 생성자 호출

클래스 : 사용자 정의 타입
클래스 정의 : 추상화 작업
클래스 구성 요소 : 상속하면 물려줌(멤버메서드 , 멤버변수 ), 생성자 , 초기화 블럭 , 또 다른 클래스

생성자
모든 클래스에는 반드시 생성자가 존재해야함 , 개발자가 생성자를 작성하지 않은 경우 , 컴파일러가 기본 생성자를 추가해준다.

오버로딩
하나의 클래스 내에서 동일한 메서드 명을 사용하는 기법

  • 호출 시점에서 구분할 수 있는가 => 매개변수의 개수 , 타입 , 순서
  • 리턴타입은 관련 없다 (호출 시점에서 알 수 가 없다)

오버라이딩
상속 관계에서 부모클래스의 메서드를 자식클래스에서 재정의하는 기법

  • 부모의 메서드 선언부와 자식의 메서드의 선언부를 동일하게 작성

이클립스 F3 누르면 해당 메서드로 이동함

상속

자바는 단일 상속만을 허용한다.

최고 조상 클래스 (Class Object)

아무것도 상속받지 않은 내가만든 부모 클래스에 컴파일러가 extends Object를 추가해준다

Super

부모의 객체를 가리키는 참조 변수
반드시 생성자의 첫 번째 문장으로 와야함

Cup c1 = new Cup(); 
Cup c2 = new Cup(); 

자식객체를 생성하면 부모객체는 자동으로 생성된다.
두개가 있다고 하면 super로 부모 객체를 참조하므로 Heap 영역에 c1 c2 p(1) p(2) 두개가 생성된다.

참조의 기본 원칙

  • 참조 지점에서 가장 가까운 곳에 선언된 것을 우선 참조한다.
  • 모든 생성자는 첫번째 줄에 나외의 또 다른 생성자를 호출하는 코드를 작성해야 한다. 개발자가 또 다른 생성자를 호출하지 않으면 컴파일러가 super()를 넣어줌

오후
C++ 객체지향 다중상속
Java 객체지향 단일상속
Python 객체지향 다중상속

다형성

여러가지 형태로 표현할 수 있는 성질 Type , method (Overloading, overriding)

  • type => 부모의 참조변수에 자식의 객체를 담을 수 있는 성질
Object c = new Cup();

interface

ctrl + n

public class ABC{
    public static void main (String[] args){
    
    }
	
}
// 인터페이스 : 상수(초기화 필수), 추상 메서드만 보유 가능  / 8 버전 부터 일반 메서드도 허용 가능
interface Aable(){	
    int a = 3 ; // 아무것도 안쓰면 public final
    void pp(); //  얘는 public abstract 
}

//인터페이스들 끼리는 다중 상속도 가능하다
interface B{void bb(); }
interface C extends B{void cc(); }
interface D extends C{void dd(); }

//추상 클래스는 추상 메서드를 보유할 수 있는 클래스 
//인터페이스는 다중 구현이 가능하다.
abstract class Aabs implements Aable , D{ //Aable , D를 구현하겠다
   public void pp(){};
   public void bb(){};
   public void cc(){};
   public void dd(){};
}

abstract class X{
    abstract void qq(); // 추상 메서드
}

시험
edu ssafy
압축 파일 다운받기

  1. 워크스페이스 변경 (들어와서 file - switch workspace - other
  2. preference - encoding - general - Content Types - text - UTF-8 - workspace - Other - (UTF-8)
  3. 우클릭 import
    3 .general - existing projects into workspace - select archive

javaproject f2 누르고 이름 바꾸기
서울10_최동욱

우클릭

메소드오버라이딩 29페이지 시험에나온대

profile
FE 개발자가 되자

0개의 댓글