2017-04-06 10 views
0

なぜ私のゲッタークラスが動作していないのか分かりません。方法:メインからゲッターにアクセスするには?

getterは、Siteというクラスで次のように設定されています。

private PageNode homePage; 

public void setHomePage(PageNode homePage){ 
    this.homePage = homePage; 
} 

public PageNode getHomepage(){ 
    return homePage; 
} 

私は次のようにそれを呼び出す必要があるだろう、私の理解は、それがメインにホームページを参照することで、今、(他の場所でそれを定義するクラスと呼ばれるPageNodeがあります):

PageNode refHomePage = getHomePage(); 

しかし、それは動作しません、どちらもgetHomePageそれ自体ではありません。拡張のための

EDIT:ホーム・ページ

SortedADT website = new Site().

でサイトを参照するように設定する必要があります。しかししようwebsite.getHomepageは動作しません - クラスにgetHomePageも表示されません。

これは一日中作業していて、まだJavaを学んでいるからかもしれませんが、なぜこれが機能していないのかわかりません。

+1

'サイトrefHomePage =新しいサイト(); refHomePage.getHomepage() ' –

+0

メインは静的ですが、ここでコンパイルエラーが発生しているとは限りません。 – Vipin

+1

実際のオブジェクトでゲッターを呼び出す必要があります。そのゲッターを単独で呼び出すときに、誰の財産を求めていると思いますか?あなたがそれを理解できなければ、どちらもコンパイラはできません。 –

答えて

0

ゲッターがあなたが書いたようにクラスSiteに存在する場合は、そのクラスのインスタンスで呼び出す必要があります(これは、Johnがまだ提案していないためです)。

Site myMainSite = new Site(); 
//... 

PageNode refHomePage = myMainSite.getHomepage(); 
//... 

EDIT: OK、あなたの編集後: - 1はgetHomepageメソッドを持っていないことをあなたが親クラスSortedADTを持っている主な意志のコードは次のようになり?そうでない場合は、リファレンスがタイプSortedADTの場合、どちらも動作しません。

+0

私は持っていませんでした。以前に書いたSortedADTの重要性はほとんど分かりませんでした。 'public abstract PageNode getHomepage();'正しい - 具体的には、抽象的であること? – Screedle

+0

これは抽象的である必要はありません。多型に関するこのチュートリアルを確認してください(そこでオーバーライドされる印刷機能)。 https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html あなたが継承すれば基本的にどのように働くのでしょうか? SortedADTでメソッドを抽象メソッドにしたいのであれば、それはOKです...しかし、それはあなたの設計上の選択であり、そのことで何をしようとしているかによって異なります – volzo

関連する問題