- ベストアンサー
Javaの継承についての質問
- Javaの継承について詳しく教えてください。
- Squareクラスを継承してCircleクラスを作り、オーバーライドしたメソッドで面積を求めたいです。
- 明後日に提出するので、早めに教えていただけると嬉しいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
継承と、オーバーライドの二つのキーワードで また、抽象クラスが、、キーワードになってなっていないので、 抽象クラスを、使わないと仮定して、作ってみました。 public class Shape_test { /** * @param args the command line arguments */ public static void main(String[] args) { Square sq = new Square(3.6); Circle c = new Circle(2.4); System.out.println(sq.Name()+"の面積"+sq.area()); System.out.println(c.Name()+"の面積"+c.area()); // TODO code application logic here } } class Shape { double length =0; public Shape(double l) { this.length=l; } double area(){return 0;} public String Name(){ return null; } } //Shapeを継承 class Square extends Shape{ public Square(double l) { super(l); } @Override double area() { return length*length; } @Override public String Name() { return "四角"; } } //Shapeを継承 class Circle extends Shape{ public Circle(double r) { super(r); } @Override double area() { return Math.pow(length, 2.0)*Math.PI; } @Override public String Name() { return "円"; } } なんか、昔、ドコゾの本で見たことあるような!! オーバーライドも、強引過ぎるような!! 正式に習ったことないので、適当です。 実行結果 四角の面積12.96 円の面積18.09557368467721 質問自体の意味が、よく解らないので、自分なりに 改造してください。
その他の回答 (1)
- tom11
- ベストアンサー率53% (134/251)
この問題本当にこれでいいの??? 見た感じ、強引にオーバーライドする、メッソドも 見つけられないのですが。 ちなみに、 >double Han; > Han=new Circle(); プリミティブにオブジェクトのインスタンスを入れると 言うのかな??これって、許されているのかな??? 継承を無視すれば Cirlcleクラスを作り、setCircle()とdisp()メッソドを 作れば良い様な気がするのですが。 本当に、、この問題で、いいのですか???
補足
あの問題は、まだ途中の段階で解らなくなってそのまんまにしていました。 オーバーライドと継承がまだ理解できてなくて・・・
お礼
質問がへたですみません。 できました。 本当にありがとうございました。