アプリ版:「スタンプのみでお礼する」機能のリリースについて

Aというクラスに A1という 変数をPublicで宣言します。
これを Bというクラスで 参照したいのですが どうすればいいでしょうか?

Bは Aから呼び出されます。

A 回答 (4件)

正直なところ、pamsdさんが何をしたいのか


いまいち分かりません。
もう少し詳細をご提示された方がいいと思いますよ。

一応文言をみる限りでは、
先に私が回答したような形で、Aを継承したクラスBを作成し、
Aで定義してNewしたインスタンスをBで定義した変数に代入すれば
元々クラスAだったインスタンスを
クラスBのインスタンスとして扱えます。
って感じでいけそうな気がしますが・・・。

また、
> フレームワークで ある程度できているため そういう変更とかは できないんですよね。
こういった要件があるのであれば、どんなフレームワークを使っているのか提示して頂けないと、
手探りな感じの回答しか得られないですよ。
    • good
    • 0

No.1さんへの返答を見るに、クラスAを継承してクラスBを作りたいということでしょうか?


もしそうであれば、

Public Class A
'何かの定義
End Class

Public Class B
Inherits A
'追加の定義
End Class

みたいな感じでできると思いますよ。
ちなみにこういう構造で作るのであれば、抽象クラスの作り方についても
調べてみることをお勧めします。

この回答への補足

いいえ、フレームワークで ある程度できているため そういう変更とかは できないんですよね。



そういう状態で やりたいんです。

補足日時:2012/01/25 17:47
    • good
    • 0

根本的に何かの認識が違う気がする。

。。

> Bは Aから呼び出されます。
クラスはインスタンスを生成する必要があり、「呼び出す」という時点で
インスタンスの話になります。インスタンスが別なら、
> 単純にメソッドの引数として渡すか、
> コンストラクタ(Newメソッド)を使って初期値を設定するかだと思います
これが正解であり、
> 引数として使えない、また Newは できない状態で ということです。
この時点でおかしい事になります。

> オーバーライドして 使用する箇所で用いたいのですが・・・
この表現だと、
> Bは Aから呼び出されます。
インスタンスの観点からは矛盾した事を言っているように思います。
Bは Aから呼び出せません。。。というかBとAは関係ありません。

継承などで基底クラスの定数などを利用したいなら、MyBase などで
基底クラスを参照すればいいですが、インスタンスが別であり、
変数の値が独自に設定されているなら、
> 単純にメソッドの引数として渡すか、
> コンストラクタ(Newメソッド)を使って初期値を設定するかだと思います
しか無いと思います。

同じ基底クラスの「スポンジケーキClass」に「苺Property」を乗せた
「苺ショートケーキClass」と、「栗Property」を乗せた「マロンショート
ケーキClass」があったとして、実際に売るには、それぞれのインスタンス
(実体)を複数作って店頭に並べるわけです。「Class」はレシピの段階であり、
そのままでは売れません。

あるお客さんが買った「苺ショートケーキ(インスタンス)」の「スポンジ
ケーキ(インスタンス)」を食べた時に、「マロンショートケーキ(インスタンス)」
の「スポンジケーキ(インスタンス)」が減っていく事は無いですよね?

インスタンスは個々が独立しており、そこに収められるデータに関しては
関連を持ちません。(定数やメソッドの形式などはレシピ(設計図)通りなので
共通します)
データの関連を持たせるなら、メソッドの引数などでインスタンスの参照を
渡す必要があります。
    • good
    • 0

こういう意味ですか?


単純にメソッドの引数として渡すか、
コンストラクタ(Newメソッド)を使って初期値を設定するかだと思います


Public Class A
Public A1 As Integer
Private _b As B

'mainというメソッドの中でBを呼び出す
Private Sub main()

A1 = 1
_b = New B(A1)
_b.cry() '"わん"と表示

A1 = -1
_b = New B(A1)
_b.cry() '"にゃー"と表示
End Sub
End Class

Public Class B
Private A1 As Integer
Public Sub New(ByVal _a2 As Integer)
A1 = _a2
End Sub

Public Sub cry()
If _a1 < 0 Then
MsgBox("にゃー")
Else
MsgBox("わん")
End If
End Sub
End Class

この回答への補足

回答ありがとうございます。

>単純にメソッドの引数として渡すか、
コンストラクタ(Newメソッド)を使って初期値を設定するかだと思います

これ以外の手段で ありませんでしょうか?

引数として使えない、また Newは できない状態で ということです。

オーバーライドして 使用する箇所で用いたいのですが・・・。

補足日時:2012/01/24 09:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!