Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

한자공/시즌3/20140716: Difference between revisions

From ZeroWiki
imported>healu1423
No edit summary
imported>healu1423
No edit summary
Line 54: Line 54:
** this는 자신 클래스 안의 것을 가리키다면 super()는 자손 클래스와 조상 클래스의 두 변수가 같을 때 자손 클래스에서 조상 클래스의 변수를 가리 킬 때 쓰는 것이다.
** this는 자신 클래스 안의 것을 가리키다면 super()는 자손 클래스와 조상 클래스의 두 변수가 같을 때 자손 클래스에서 조상 클래스의 변수를 가리 킬 때 쓰는 것이다.
** super()는 상위 클래스의 생성자를 가리 킬때 쓰인다.
** super()는 상위 클래스의 생성자를 가리 킬때 쓰인다.
class Car{
Car(){ 생 략...}
}
class Taxi extends Car{
      Taxi(){
              super()
              생 략... }
}


* 클래스가 .class 확장자의 파일인 것 처럼 패키지는 사실 물리적으로 폴더다.
* 클래스가 .class 확장자의 파일인 것 처럼 패키지는 사실 물리적으로 폴더다.

Revision as of 11:01, 17 July 2014

일시

  • 오후 12시 5분 ~ 1시 45분

참가자

유재범 참석
최다인 반참
이지수 참석
김용준 참석
김정민 참석

진행 상황

  • 김용준 학우의 발표
    • Java의 정석 - Chapter 7-1~4

발표 내용

  • 상속 : 상속을 받은 자손 클래스는 상속을 해준 조상 클래스의 메서드나 변수를 쓸 수 있다.
    • 재사용(재활용)을 통해서 코드가 간결해지는 장점이 있다.
class 상속받는 클래스 extends 상속하는 클래스
ex)
class Car{ 생 략... }
class Taxi extends Car{ 생 략... } 
    • JAVA는 단일 상속만 지원한다.(C++는 다중 상속을 지원한다.)
      • 인터페이스를 통해 단일 상속을 보완할 수 있다.
    • 다중 상속의 단점은 자손 클래스에서 어느 한 메서드나 변수를 가져 올 때 서로 다른 조상 클래스에서 같은 이름을 가진 메서드나 변수가 있다면 이것들이 어디서 오는건지 몰라서 문제가 생기기 때문이다.
    • Object class : 상속 받는 클래스가 없다면 그 클래스는 Object class에게 상속을 받는다. 모든 것의 조상격이다.
    • 위의 예시의 Car 클래스도 이미 Object class에게 상속받고 있다. 따로 입력을 해주지 않아도 컴파일러 단계에서 붙여준다.
    • 11가지의 메서드를 기본적으로 가지고 있다. (toString(),equals() 등등)
      • toString() : 아무 숫자를 문자열로 바꾸어 주는 메서드
      • equals() : 문자열이 같은지 판단하는 메서드(대소문자 구별, boolean 값 리턴)
  • 오버 라이딩 VS 오버로딩
    • 간단히 설명해서 오버로딩은 기능을 추가하는 것이라면 오버 라이딩은 내용을 수정하는 것이다.
    • 오버 라이딩은 이름, 매개변수, return 타입이 같아야 하지만 오버로딩은 이름과 return은 같아야 하고 매개변수가 달라야 한다.
    • 오버 라이딩은 매개변수, 이름, return 타입이 다르면 오버라이딩이 되지 않는다.
      • 오버라이딩의 규칙
      • 오버라이딩 할 때에는 접근 제한자의 범위가 조상 클래스의 메서드보다 같거나 커야한다.(private < package < protected < public)
      • 오버라이딩 된 하위 클래스의 메서드는 throws 구문이 있으면 상위 클래스의 오버라이딩을 준 메서드도 반드시 해당 예외 클래스를 준하는 throws 구문이 있어야 한다.
      • 예외 처리는 자손 클래스가 조상 클래스보다 더 많이 할 수 없다.
      • static 메서드를 조상 클래스에서 인스턴스 메서드로 오버라이딩이 불가능하다.
  • super() 조상 클래스를 따라가는 this와 같은 것.
    • this는 자신 클래스 안의 것을 가리키다면 super()는 자손 클래스와 조상 클래스의 두 변수가 같을 때 자손 클래스에서 조상 클래스의 변수를 가리 킬 때 쓰는 것이다.
    • super()는 상위 클래스의 생성자를 가리 킬때 쓰인다.
class Car{
Car(){ 생 략...}
}
class Taxi extends Car{ 
      Taxi(){
             super()
             생 략... }
}
  • 클래스가 .class 확장자의 파일인 것 처럼 패키지는 사실 물리적으로 폴더다.
    • 이클립스에서 패키지를 만들고 그 안에 클래스를 만들면 그 클래스 제일 위에 폴더 이름이 나타난다.
    • import 패키지명.클래스. *
    • *(와일드 카드) : 패키지 안, 클래스 안 모든 메서드를 다 쓰겠다는 것.
  • 제어자 - static, final, static final, abstract
    • 제어자는 접근 권한을 제한하는 것.
    • final은 C에서 const와 같은 것이다.
    • final 변수를 만들고 그 변수를 생성자 안에서 초기화를 하면 객체마다 가격을 지정하면서 가격이 변하지 않게 할 수 있다.
    • static은 instant하지 않고도 쓸 수 있는 것. static이 붙은 변수를 클래스 변수라고 한다.
    • static final은 static과 final의 합쳐진 형태로 모두가 필요하나 값이 변하면 안되는 상수 같은 경우에 쓰인다. (Ex : PI)
    • abstract는 내용 여부를 정확히 모를 때 일단 형태만 만들어 놓고 나중에 가져다 쓰는것.
    • class를 추상화 하는 것이 아니라 사실 메서드에 쓰는 것이다. class 앞에 붙은 이유는 그 클래스 안에 abstract method가 있다고 나타내는 것이다.
    • abstract는 같은 클래스 내에서 설정을 하지 못하며 다른 클래스에서 무조건 오버 라이딩을 해줘야한다.
      • 그래서 abstract는 private로 설정 할 수 없다.
같은 클래스 같은 패키지 자손 클래스 전체
public
protected
package
private
  • 캡슐화 : privated 또는 protected(대부분 privated)로 변수나 메서드를 모두 씌워서 접근 제한을 두는 것. 그리고 이를 get~이나 set~로 접근을 하는 것이다.
    • 그렇기에 get, set은 public으로 한다.
    • 생성자도 특수한 메서드이기 때문에 캡슐화에 포함된다.
    • 그렇기에 메서드를 이용해 생성자를 선언 할수도 있다.
       class Car{
       private static Car A = new Car();
       private car(){}
       public static Car new Car(){
              return A
       }

       main class>>
              Car A;
              A = Car.newCar();
    • 위와 같은 과정을 통해 메서드를 이용해 생성자를 선언한다.
    • static과 abstract는 같이 쓸 수 없다. static은 내용이 있어야 하는 것이고 abstract는 형태만 잡는 것이기 때문이다.
    • abstract와 final도 같이 쓸 수 없다. abstract는 상속을 통해 기능을 완성시키지만 final은 처음에 설정한 것을 나중에 수정을 하지 못하게 하기 때문이다.
    • private와 abstract 또한 같이 쓸 수 없다. abstract는 상속을 통해 기능을 완성시켜야 하지만 private로 접근을 막아버리는 것은 모순되는 것이기 때문이다.
    • 마지막으로 private와 final을 같이 쓸 수 필요가 없다. 조상 클래스에서 final private로 메소드를 만들면 애초에 private에 의해 오버라이딩을 할 수 없기 때문에 할 필요가 없다.

다음 진행

  • Chapter 7-5~7 다형성,추상,인터페이스
  • 발표 : 유재범

과제

유재범

최다인

이지수

김용준

김정민

후기


한자공/시즌3