Whitney_wu
2019-03-09 09:50
/*这是子类——圆类*/
package com.imooc; import java.util.Scanner; public class Circle extends Shape { Scanner in = new Scanner(System.in); public void call(){ System.out.println("现在是计算圆的面积和周长"); System.out.println("请输入圆的半径"); double r=in.nextDouble(); double Pi=3.14; System.out.println("圆的面积:"+Square(r,Pi)); System.out.println("圆的周长:"+Leng(r,Pi)); } public double Square(double a, double b) { // TODO Auto-generated method stub double S; S=b*a*a; return S; } public double Leng(double a, double b) { // TODO Auto-generated method stub double l; l=b*2*a; return l; } }
/*这是子类——矩形类*/
package com.imooc; import java.util.Scanner; public class Rectangle extends Shape { Scanner in = new Scanner(System.in); public void call() { System.out.println("计算矩形的周长和面积"); System.out.println("请输入两条边长"); double a = in.nextDouble(); double b = in.nextDouble(); System.out.println("矩形的面积是:"+Square(a,b)); System.out.println("矩形的周长是:"+Leng(a,b)); } @Override public double Square(double a, double b) { // TODO Auto-generated method stub double S; S=a*b; return S; } @Override public double Leng(double a, double b) { // TODO Auto-generated method stub double l; l=2*(a+b); return l; } }
/*这是父类*/
package com.imooc; public abstract class Shape { public abstract double Square(double a,double b); public abstract double Leng(double a,double b); }
/*这是测试类*/
package com.imooc; public class Initial { public static void main(String[] args) { /*Rectangle rec = new Rectangle(); rec.call(); Circle cir = new Circle(); cir.call();*/ //以上方法是可行的 Shape rec = new Rectangle(); ((Rectangle) rec).call(); Shape cir = new Circle(); ((Circle) cir).call(); }//这个方法也是可行的 }
我主要是想知道为什么以下内容会报错,必须改成上面那两种才可以
Shape rec = new Rectangle(); rec.call(); Shape cir = new Circle(); cir.call()
因为你的call方法是子类的方法,不是从父类那儿继承过来的。然后你最后一种方式定义的对象rec和cir,都是Shape的父类,不具有call方法。
Java入门第二季 升级版
531023 学习 · 6160 问题
相似问题