슈퍼클래스(부모)와 서브클래스(자식)관계의 클래스에서 접근 지정자를 private으로 하여 멤버변수의 게터를 이용하여 가져오도록 한다.

 

public class Main 
{
 
    public static void main(String[] args) 
    {
        BusinessMan bMan = new BusinessMan("Jack""ACompany""Student");
        
        System.out.println("My name is " +         bMan.GetName());
        System.out.println("My company is " +     bMan.GetCompany());
        System.out.println("My position is " +     bMan.GetPosition());
    }
 
}
 
cs

 

public class Man 
{
    private String mName;
    
    public Man(String name)
    {
        this.mName = name;
    }
    
    public String GetName()
    {
        return mName;
    }
}
 
cs

 

public class BusinessMan extends Man 
{
    //회사명, 직책
    private String mCompany, mPosition;
    
    public BusinessMan(String name, String company, String position)
    {
        super(name);
        
        this.mCompany = company;
        this.mPosition = position;
    }
    
    public String GetCompany()
    {
        return mCompany;
    }
    
    public String GetPosition()
    {
        return mPosition;
    }    
}
 
cs

 

 

 

상속 관계에서 서브클래스는 슈퍼클래스의 변수를 함께 담아야하기에 서브 클래스의 생성자에서 슈퍼 클래스의 생성자를 호출하도록 한다.

 

public class Main {
 
    public static void main(String[] args) 
    {
        WaterCar car = new WaterCar(532);
        
        car.ShowCurrentGauge();
    }
 
}
 
cs

 

public class GasolineCar 
{
    private int mGasolineGauge;
    
    public GasolineCar(int gasolineGauge)
    {
        this.mGasolineGauge = gasolineGauge;
    }
    
    public void ShowCurrentGauge()
    {
        System.out.println("가솔린 양: " + mGasolineGauge);
    }
}
cs
public class ElectricCar extends GasolineCar 
{
    private int mElectricGauge;
    
    public ElectricCar(int gasolineGauge, int electricGauge)
    {
        super(gasolineGauge);
        
        this.mElectricGauge = electricGauge;
    }
    
    public void ShowCurrentGauge()
    {
        super.ShowCurrentGauge();
        
        System.out.println("전기 양: " + mElectricGauge);    
    }
}
 
cs

 

public class WaterCar extends ElectricCar
{
    private int mWaterGauge;
    
    public WaterCar(int gasolineGauge, int electricGauge, int waterGauge)
    {
        super(gasolineGauge, electricGauge);
        
        this.mWaterGauge = waterGauge;
    }
    
    public void ShowCurrentGauge()
    {
        super.ShowCurrentGauge();
        
        System.out.println("물 양: " + mWaterGauge);
    }
}
cs

 

 

 

 

public class Main
{
    public static void main(String[] args) 
    {
        new Cat();
        new Dog();
        new Dog();
        
        System.out.print("생성된 객체의 개수: " + Animal.AnimalCount);
    }
}
cs

 

public class Animal 
{
    public static int AnimalCount = 0;
    
    public Animal()
    {
        ++AnimalCount;
    }
}
cs

 

public class Cat extends Animal 
{
    public Cat()
    {
        super();
    }
}
 
cs

 

public class Duck extends Animal
{
    public Duck()
    {
        super();
    }
}
cs

 

public class Dog extends Animal 
{
    public Dog()
    {
        super();
    }
}
 
cs
bonnate