JAVA 作业 实验名称:接口,继承与多态

1. 新建Eclipse项目,项目名为My_Eight;
2.定义接口Shape,用来表示一般二维护图形,Shaple具有抽象方法area和perimeter,分别用来计算形状的面积和周长,定义子类:圆形,三角形和矩形。这些类通过实现Shape接口,进行具体的计算出各种形状的周长和面积。请根据要求进行设计接口和类,并进行测试。
3.定义抽象类Shape,用来表示一般二维图形,Shape具有抽象方法area和perimeter,分别用来计算形状的面积和周长,定义子类:圆形,三角形和矩形。这些类通过继承Shape来实现,进行具体的计算出各种形状的周长和面积。请根据要求进行设计类,并进行测试。

4.使用面向对象的概念表示出下面的生活场景:小花去超市买东西,所有买到的东西都放在了购物车之中,最后到收银台一起结账。

2.
Shape:
package com.test;

public interface Shape {

public double area();
public double perimeter();
}

Circle: 
package com.test;

public class Circle implements Shape {
double r = 5;
double pi = 3.14;

@Override
public double area() {
return pi*r*r;
}

@Override
public double perimeter() {
return 2*pi*r;
}

}

Rectangle:
package com.test;

public class Rectangle implements Shape {
double a = 3;
double b = 4;

@Override
public double area() {
return a*b;
}

@Override
public double perimeter() {
return 2*(a+b);
}

}

Triangle: 
package com.test;

public class Triangle implements Shape {
double a = 4;

@Override
public double area() {
return a*a;
}

@Override
public double perimeter() {
return 4*a;
}

}

3.
shape:
package com.test.abstr;

public abstract class Shape {
public double area(){
return 0.0;
}
public double perimeter(){
return 0.0;
}
}

Circle: 
package com.test.abstr;

public class Circle extends Shape {
double r = 5;
double pi = 3.14;

public double area(){
return pi*r*r;
}
public double perimeter(){
return 2*pi*r;
}
}

Rectangle: 
package com.test.abstr;

public class Rectangle extends Shape {
double a = 3;
double b = 4;

public double area() {
return a*b;
}

public double perimeter() {
return 2*(a+b);
}

}

Triangle:
package com.test.abstr;

public class Triangle extends Shape {
double a = 4;

public double area() {
return a*a;
}

public double perimeter() {
return 4*a;
}

}

Test:
package com.test.abstr;

public class Test {

/**
 * @param args
 */
public static void main(String[] args) {
Shape s1 = new Circle();
System.out.println(s1.area());
System.out.println(s1.perimeter());

Shape s2 = new Rectangle();
System.out.println(s2.area());
System.out.println(s2.perimeter());

Shape s3 = new Triangle();
System.out.println(s3.area());
System.out.println(s3.perimeter());
}

}

结果:

78.5

31.400000000000002

12.0

14.0

16.0

16.0

4.
package com.test.four;

public class Person {
String name;
public void pay(double num){
System.out.println(name+"共花费"+num+"元");
}
}

package com.test.four;

public class ShoppingCart {
public String name;
public double price;
public int count;
}

package com.test.four;

public class Checkstand {
public static void main(String[] args) {
double count = 0.0;
ShoppingCart sc1 = new ShoppingCart();
sc1.name = "牙膏";
sc1.price = 6.5;
sc1.count = 1;
count = count + getCount(sc1);
ShoppingCart sc2 = new ShoppingCart();
sc2.name = "香皂";
sc2.price = 4.5;
sc2.count = 1;
count = count + getCount(sc2);
ShoppingCart sc3 = new ShoppingCart();
sc3.name = "洗衣粉";
sc3.price = 16.5;
sc3.count = 1;
count = count + getCount(sc3);

Person person = new Person();
person.name = "小花";
person.pay(count);
}

public static double getCount(ShoppingCart sc){
System.out.println(sc.name+"    ----"+sc.count+"件   "+sc.price * sc.count+"元");
return sc.price * sc.count;
}
}

结果:

牙膏    ----1件   6.5元

香皂    ----1件   4.5元

洗衣粉    ----1件   16.5元

小花共花费27.5元


个人建议,如果是初学者还是自己多去思考,多去练习,如果以后想从事软件开发方面的,更需要多练多看多想。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-03

我的项目仅仅作为抛砖引玉,借鉴作用,有不懂的可以继续问我,加油!!!

//接口
public interface Shape {
    
    public float area();
    
    public float perimeter();
}


//圆
public class Circular implements Shape {
    
    private final float pi = 3.14f;
    private float r;
    
    public Circular() {
        super();
    }
    
    public Circular(float r) {
        super();
        this.r = r;
    }

    @Override
    public float area() {
        // TODO Auto-generated method stub
        return pi*r*r;
    }

    @Override
    public float perimeter() {
        return 2*pi*r;
    }

}

//矩形
public class Rectangle implements Shape {
    
    private float x; //长
    private float y;  //宽
    
    
    
    public Rectangle() {

    }
    
    public Rectangle(float x, float y) {
        super();
        this.x = x;
        this.y = y;
    }



    @Override
    public float area() {
        return x*y;
    }

    @Override
    public float perimeter() {
        return 2*(x+y);
    }

}

//三角形
public class Triangle implements Shape {
    
    //x,y,z分别表示三角形的三条边
    private float x;
    private float y;
    private float z;
    
    public Triangle(){
        
    }
    
    
    public Triangle(float x, float y, float z) {
        super();
        this.x = x;
        this.y = y;
        this.z = z;
    }


    @Override
    public float area() {
        return x*y/2;  //此时x,y为两直角边
    }

    @Override
    public float perimeter() {
        return x+y+z;
    }

}

第2个回答  2015-11-03
这样问问题, 能得到帮助的可能性会小很多.你应该尝试去写代码, 遇到的技术问题再来发问, 然后可能会得到更多的帮助. 直接就发业务, 别人可能不会愿意帮你写代码.本回答被网友采纳

用java继承,多态与接口
定义继承:使用关键字 extends 来实现继承6、多态(Polymorphism)按字面的意思就是“多种状态”,也是面向对象的一个特性。允许将子类类型的引用赋值给父类类型的引用。7、代码如下:\/** * 父类(图形) * * @author qd * *\/abstract class Figure { double area;}\/** * 求面积的接口 * ...

JAVA 作业 实验名称:接口,继承与多态
2.Shape:package com.test;public interface Shape {public double area();public double perimeter();}Circle: package com.test;public class Circle implements Shape {double r = 5;double pi = 3.14;@Overridepublic double area() {return pi*r*r;}@Overridepublic double perimeter() {ret...

【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖...
可以说接口是比抽象更抽象的概念。抽象类还提供某些具体实现,而接口不提供任何实现,接口中所有方法都是抽象方法。接口是完全面向规范的,规定了一批类具有的公共方法规范。接口的意义在于全面地、专业地实现了规范和具体实现的分离,便于实现模块化设计。类与接口的关系:类与接口的区别:抽象类与接口的区...

java中继承和多态区别?
继承,子类继承父类中所以的属性和方法,但是对于private的属相和方法,由于这个是父类的隐私,所以子类虽然是继承了,但是没有可以访问这些属性和方法的引用,所以相当于没有继承到。很多时候,可以理解为,没有继承。多态:就是父类引用可以持有子类对象。这时候只能调用父类中的方法,而子类中特有方法是...

继承与多态的区别
以java为例,继承和多态的区别如下:1、继承是面向对象最显着的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择...

java中多态和继承的区别
多态是指的 父类里已有的方法,不同的子类可以根据不同的需要重写该方法,以达到不同效果。方法继承是指 父类里已有的方法,子类可直接用父类的方法,而不用再去定义。比如 父类 Animal 有 eat(),子类Dog重定义 eat(),具体是吃骨头,子类Cat重定义eat(),具体是吃鱼,子类Cow重定义eat()具体...

Java中接口、接口的实现和多态的问题?
没错,这就是多态。接口实现的多态,意味着接口UserService负责定义方法的名字,形参列表和返回值,而不考虑其具体实现,调用方UserBlh也不必了解findUser,saveOrUpdate这两方法由谁来实现,只需知道这userService指针指向的对象已经实现了这两个方法,那么调用方UserBlh只管调用就好。“调用的是接口User...

Java程序设计实验报告 继承与多态
public class Test { \/ param args \/ public static void main(String[] args) { Circle c = new Circle(2,4,3);c.printItMyWay();} } abstract class Shape{ public abstract float getCir();public abstract float getArea();} class Point extends Shape implements Printable{ public int ...

Java多态,继承,接口等知识综合题,这个我不太会,希望大家帮帮忙,谢谢了...
1、新建一个Roboot类,这个类定义公共的功能,model、name,walk()2、新建两个接口,说话和分析图片 3 、新建机器人A类 RobootA 机器人B和C,你参考这个写就可以 4、测试 学习

为什么要使用java的继承与多态?使用java的继承与多态的好处是什么?_百 ...
继承和多态是面向对象的几大特性之一 继承:如果你的多个类中具有相同的属性,就可以把那些相同的属性提取出来做为父类,其他那些类继承父类,子类将会拥有你类的所有的非私有的属性和方法,这样即可以减少代码的冗余,又增强了代码的可读性和健壮性 多态:多态分为静态的多态和动态的多态,静态的多态是...

相似回答