2016-07-07 2 views
1

저는 현재 자바 프로젝트를 진행하고 있습니다. 교사는 자신을 설명하는 데별로 좋지 않습니다. 현재 Java에서 확장 클래스를 참조하여 균형을 잡으려 고 노력하고 있습니다. (이 배열에 표시 변경 될 수 있도록 내가. 균형을 편집하기 위해 노력하고있어 확장이java에서 확장 서브 클래스를 참조하는 방법은 무엇입니까?

public class Account { 
    private String name; 
    private double quantity, price; 
    private double rate; 
    private Asset[] Asset; 
} 

계정이

abstract public class Asset { 

    String symbol; 


    public String getSymbol() { 
     return symbol; 
    } 

    protected Asset(String symbol) { 
     this.symbol = symbol; 
    } 

} 
처럼

내 주요 계정이 보인다

확장은 지금과 같이,

public class Cash extends Asset { 

    private double Quantity; 


    public Cash(double Quantity, String symbol) { 
     super(symbol); 
     this.Quantity = Quantity; 
    } 


    @Override 
    public String getSymbol() { 
     return super.getSymbol(); //To change body of generated methods, choose Tools | Templates. 
    } 

    public double getQuantity() { 
     return Quantity; 
    } 

    public void setQuantity(double Quantity) { 
     this.Quantity = Quantity; 
    } 
} 

는 이제 클래스 아코의 생성 된 테스트 인스턴스가 있다고 가정 할 수 있습니다 안돼. 클래스 계정에서 현금 가치를 편집하려면 어떻게해야합니까? (Main arg) 다음은 참조 용으로 만 사용한 다른 확장입니다.

public class Stock extends Asset { 

    private String name; 
    private double quantity, rate; 


    public Stock(String name, double quantity, double rate, String symbol) { 
     super(symbol); 
     this.name = name; 
     this.quantity = quantity; 
     this.rate = rate; 
    } 



    @Override 
    public String getSymbol() { 
     return super.getSymbol(); //To change body of generated methods, choose Tools | Templates. 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public double getQuantity() { 
     return quantity; 
    } 

    public void setQuantity(double quantity) { 
     this.quantity = quantity; 
    } 

    public double getRate() { 
     return rate; 
    } 

    public void setRate(double rate) { 
     this.rate = rate; 
    } 
} 

도움이된다면 어떻게 확장 클래스의 값을 변경할 수 있습니까? 나는

Asset[0] = new Cash(25000.00,string); 

을 시도했지만 그 값을 수동으로 퍼팅 만 도움이됩니다. 사과드립니다. 나는 코딩과 자바에 익숙하지 않습니다.

+0

근본적으로하지 마세요. '현금'이 '현금'이라는 사실을 알아야한다면 일반 '자산'이 아닌 '현금'으로 취급하십시오. – chrylis

+0

교수가 요구하는 것은 하나 여야합니다. – vdefile

+0

제공된 대답을 사용하십시오. 그러나 이것은 잘못된 설계임을 유의하십시오. – chrylis

답변

1

당신이 당신의 자산 배열이 혼란라는 방법은, 자바는 대소 문자를 그렇게 예를 들어 그것을 이름입니다 :

당신은 당신이 그것을 액세스하기 전에 캐스팅을 통해 올바른 유형의 참조를 얻을 필요가
private Asset[] asset; 

은 자신의 방법 . 예를 들면 다음과 같습니다.

if (asset[0] instanceof Cash) { 
    Cash cash = (Cash)asset[0]; 
    // Then you can access the setQuantity method 
    cash.setQuantity(25000.00); 
} 
+0

정말 고마워요 !!! 나는이 두려운 문제를 해결하는 방법을 궁금해했다! – vdefile

+0

@vdefile, 내 기쁨 !!! – alainlompo

+0

User.setQuantity (25000.00); System.out.println (User.getQuantity()); 이걸 실행하면 아무 것도 표시되지 않습니다 (사용자가 Account 클래스의 인스턴스 임). 내가 뭔가를 잊었는지 궁금 해서요 – vdefile

관련 문제