[code=Java][java/code]import java.util.*;
class shape
{
int a ;
int b ;
float pai ;
public shape()
{
this.a = a ; //长
this.b = b ; //宽
this.pai = 3.1415926f ; //π
}
void zj ()
{
System.out.println("周长 " + ( a * b ) * 2 );
}
void mj ( )
{
System.out.println( "面积 " + ( a * b ));
}
}class Rect extends shape //矩形
{
void zj (int a , int b )
{
System.out.println("矩形周长 " + ( a * b ) * 2 );
}
void mj (int a , int b )
{
System.out.println( "矩形面积 " + ( a * b ));
}
}class Circle extends shape //(圆形)
{
public Circle ( int r )
{
this.a = r ; //r代表半径
}
void zj ( int a )
{
System.out.println("园周长" +( 2 * pai * a) );
}
void mj ( int a )
{
System.out.println("园面积" + ( a * a * pai));
}
}class Square extends Rect
{
public Square ( int s )
{
this.a = s ;
}
void zj ( int a )
{
System.out.println ("正方形周长"+ ( a * 4) );
}
void mj (int a )
{
System.out.println("正方形面积:" + ( a * a));
}
}
class Lei
{
public static void main ( String [] args )
{
Rect r = new Rect();
Circle c = new Circle();
//Square s = new Square();
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
//r.zj(m);
c.zj(m);
c.mj(m);
}
}思路对吗? 这应该是面向对象的思路吧?? 我怎么传参就错误啊 ?????? 那个高手给我详细说下我错在哪里了嘛??
class shape
{
int a ;
int b ;
float pai ;
public shape()
{
this.a = a ; //长
this.b = b ; //宽
this.pai = 3.1415926f ; //π
}
void zj ()
{
System.out.println("周长 " + ( a * b ) * 2 );
}
void mj ( )
{
System.out.println( "面积 " + ( a * b ));
}
}class Rect extends shape //矩形
{
void zj (int a , int b )
{
System.out.println("矩形周长 " + ( a * b ) * 2 );
}
void mj (int a , int b )
{
System.out.println( "矩形面积 " + ( a * b ));
}
}class Circle extends shape //(圆形)
{
public Circle ( int r )
{
this.a = r ; //r代表半径
}
void zj ( int a )
{
System.out.println("园周长" +( 2 * pai * a) );
}
void mj ( int a )
{
System.out.println("园面积" + ( a * a * pai));
}
}class Square extends Rect
{
public Square ( int s )
{
this.a = s ;
}
void zj ( int a )
{
System.out.println ("正方形周长"+ ( a * 4) );
}
void mj (int a )
{
System.out.println("正方形面积:" + ( a * a));
}
}
class Lei
{
public static void main ( String [] args )
{
Rect r = new Rect();
Circle c = new Circle();
//Square s = new Square();
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
//r.zj(m);
c.zj(m);
c.mj(m);
}
}思路对吗? 这应该是面向对象的思路吧?? 我怎么传参就错误啊 ?????? 那个高手给我详细说下我错在哪里了嘛??
构造函数是有参数的,你没参数怎么行呢。加个参数,程序就能跑了
你的构造函数是带参数的public Circle ( int r )
Circle c = new Circle(); 这句要传个参数进去
Circle c = new Circle(); 没有为Circle定义默认构造
public shape()
{
this.a = a ; //长
this.b = b ; //宽
this.pai = 3.1415926f ; //π
}
这里的长 宽赋值是多余的.
做为形状,一定会有长宽吗?pai也不是形状特性吧 还不够抽象c.zj(m);
c.mj(m);
这样子调用跟普通函数比较除了多了对象增加了内存消耗 没什么优势
int a;
int b;
double count;
float pai;
public shape() {
this.a = a; // 长
this.b = b; // 宽
this.pai = 3.1415926f; // π
}
void zj() {
System.out.println("周长 " + (a * b) * 2);
} void mj() {
System.out.println("面积 " + (a * b));
}}
class Rect extends shape // 矩形
{
void zj(int a, int b) {
count= (a * b) * 2;
System.out.println("矩形周长 " +count);
} void mj(int a, int b) {
count=a*b;
System.out.println("矩形面积 " + count);
}
}class Circle extends shape //(圆形)
{
public Circle ( int r )
{
this.a = r ; //r代表半径
}
void zj ( int a )
{
System.out.println("园周长" +( 2 * pai * a) );
}
void mj ( int a )
{
System.out.println("园面积" + ( a * a * pai));
}
}
class Square extends Rect
{
public Square ( int s )
{
this.a = s ;
}
void zj ( int a )
{
System.out.println ("正方形周长"+ ( a * 4) );
}
void mj (int a )
{
System.out.println("正方形面积:" + ( a * a));
}
} class hh {
public static void main(String[] args) {
shape sh =new shape();
Rect r = new Rect();
r.zj(2,3);
r.mj(3,4);
Circle c=new Circle(3);
c.mj(2);
c.zj(2);
Square sq=new Square(3);
sq.zj(3);
sq.mj(3);
}
}没错了 呵呵 !
当时就是想到这些形状都有长度的 所以就把他们的长和宽给抽了出来放在父类里
可不知道具体要怎么样去考虑这个抽象 只是在找他们的共性