スーパークラスのメソッドをサブクラスで実行したくないのですが、
継承に不慣れでやり方が分からず困っています。
現在
swift
1class SupperClass: UIViewController { 2 3 @IBOutlet weak var buttonA: UIButton! 4 5 let image = UIImage(named: "image") 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 setButton(button: buttonA) 11 } 12 13 func setButton(button: UIButton) { 14 button.setImage(image, for: .normal) 15 } 16 } 17
swift
1class SubClass: SupperClass { 2 3 @IBOutlet weak var buttonB: UIButton! 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 8 setButton(button: buttonB) 9 10 } 11
上記だとSubClassにアクセスした時に スーパークラスのsetButton(button: buttonA) でnilのエラーになります
エラーが出ないようにする為にはどのようにすれば良いでしょうか?
何のためにそのようなことをしたいのでしょうか。
この問題に直面した時に一番初めに考えるべき事柄はこの2つのクラスは本当に継承関係にあるのかということです。
実際に問題が発生しているコードが提示されれば何らかの返答が出来るかもしれませんが、提示のコードではその判別はできませんので、詳しくはis-a関係とかでググってください。
> maisumakun様
分かりやすさ重視で単純化しましたが返って具体的な利用シーンが想定しづらくなってしまった様ですみません。質問を修正させて頂きました。
>MasakiHori 閲覧有難うございます
継承関係はサブクラスに class SubClass: SupperClass と記述したのみです。
サブクラスでスーパークラスのメソッド等は使えているので継承関係はなりったていると思い込んでいましたが不足やなりたっていなかったりしますでしょうか?
質問の修正させて頂きました。
回答1件
あなたの回答
tips
プレビュー