Java_Week_6

신태원·2020년 10월 12일
1

Java

목록 보기
7/7
post-thumbnail

Inheritance(상속) 1

  • Inheritance: 다른 클래스로부터 상속을 받아서, 그 클래스에 있는 모든 Implementation을 그대로 사용할 수 있게 된다. 이 때 중요한 것은, 상속을 받을 수 있고, 또 함께 원하지 않는 것을 수정할 수도 있음. (메소드를 내가 원하는 메소드로 치환할 수 있음)

  • 같은 이름, 파라미터로 선언하면 method override라고 한다.

  • @Override 이렇게 쓰면, 이 메소드는 super class에서 정의된 메소드를 다시 Implementation 하는 것. => 컴파일러가 확인함.

public class CommissionEmployee
{
   private String firstName;
   private String lastName;
   private String socialSecurityNumber;
   private double grossSales;
   private double commissionRate;
   
   public CommissionEmployee( String first, String last, String ssn, double sales, double rate)
   {
      firstName = first;
      lastName = last;
      socialSecurityNumber = ssn;
      setGrossSales( sales );
      setCommissionRate( rate );
   }
   
   public void setSoicalSecurityNumber( String ssn )
   {
      socialSecurityNumber = ssn;
   }
   
   public String getSocialSecurityNumber()
   {
      return socialSecurityNumber;
   }
   
   public void setGrossSales( double sales )
   {
      grossSales = ( sales < 0.0 ) ? 0.0: sales;
   }
   
   public double getGrossSales()
   {
      return grossSales;
   }
   
   public void setCommissionRate( double rate )
   {
      commissionRate = (rate > 0.0 && rate < 1.0 ) ? rate: 0.0;
   }
   
   public double getCommissionRate()
   {
      return commissionRate;
   }
   
   public double earnings()
      return getCommissionRate() * getGrossSales();
   }
   
   @Override
   public String toString()
   {
      return String.format("%s: %s %s \n%s: %s\n%s: %.2f\n%s: %.2f",
         "commission employee", getFirstName(), getLastName(), 
         "social security number", getSocialSecurityNumber(),
         "gross sales", getGrossSales(),
         "commission rate", getCommissionRate());
   }
   //메소드안에서 직접 instance 변수들을 부르는게 아니라, 따로 메소드를 이용해 가져오는 방식을 이용하자!(감추자)


}



public class  BasePlusComissionEmployee extends CommissionEmployee
//class BasePlusComissionEmployee 가 CommissionEmployee에 상속된다는 의미
{
   private double baseSalary;
   
   public BasePlusCommissionEmployee (String first, String last, String ssn, double sales, 
   double rate, double salary)
   {
      super( first, last, ssn, sales, rate);
      //CommissionEmployee 생성자에 들어가는 듯..
      setBaseSalary( salary);
   }
   
   public void setBaseSalary( double salary )
   {
      baseSalary = ( salary < 0.0 ) ? 0.0 : salary;
   }
   
   public double getBaseSalary()
   {
      return baseSalary;
   }
   
   @Override
   public double earnings()
   {
      return getBaseSalary() + super.earnings();
      //CommissionEmployee에 있는 earnings() 실행
   }
   
   @Override
   public String toString()
   {
      return String.format( "%s %s\n%s: %.2f, "base-salaried", super.toString(),
      "base salary", getBaseSalary() );
   }
}
   
  • protected members
    -> access를 제어.
    -> subclass에서만 접근이 가능.(class 내부 method에서는 접근 가능)
    -> private -> protected -> public (강도 순)

class "Object"

  • class의 이름이 Object.(c++에는 없음)
  • 자바에서는 class를 하나밖에 상속을 못 받음. => 모든 class는 따로 쓰지 않더라고 Object class를 상속받는다.
    -> 자바에서 모든 Object가 만족시켜야 하는 성질을 정의해 놓음.
    -> clone() 메소드 지원: 객체를 copy함.
    -> equlas() 메소드 지원: 두 Object의 내용이 같은지 확인해줌.
    -> getClass() 메소드 지원: getClass() 메시지를 받은 객체의 class 정보를 가진 Object를 return 함.
    -> hashCode() 메소드 지원: ??
    -> toString() 메소드 지원: object의 string 형태를 return

GUI Case Study: Displaying Text and Images Using Labels

  • Visual 한 객체를 widget이라 함.
  • widget을 만드려면 JLabel이라는 class를 사용하며, javax.swing package에 있는 class임. 텍스트와 image 둘다 표시 가능
  • setText()라는 메소드로 text의 내용을 지정하며, ImageIcon이라는 type의 object를 JLabel에 붙힐 수 있음.
profile
일단 배우는거만 정리해보자 차근차근,,

0개의 댓글