您好,提问者:1、抽象类:如果这个类里面的方法有一个是抽象的,那么这个类必须是抽象的。抽象类中的方法,子类必须实现。抽象类中可以有变量,可以有方法体的方法。2、接口:接口中方法都默认是public 的,不能有方法体。接口中的变量都常量,都是public static final 的,必须先赋值。如果一个类实现了此接口,必须覆盖接口中的所有抽象方法www.book6789.com防采集请勿采集本网。
实验6
抽象类和接口
1,抽象类和接口都代表系统的抽象层;2,抽象类和接口都不能被实例化,但都可以继承或者实现抽象类或者接口的具体类,通过定义引用变量来构造;3,抽象类和接口都包含抽象方法;4,抽象类中可以

一、实验目的:
从某种意义上说,接口是一种特殊形式的抽象类,在java语言中抽象类表示的是一种继承关系,一个类只能继承继承一个抽象类,而一个类却可以实现多个接口。在许多情况下,接口确实可以代替抽象类,如果你不
1、学习掌握抽象类的概念和使用方法。
开闭原则 Java web中开闭原则(OCP)是指软件实体至于开闭原则的具体抽象实现方面,可以通过Java的抽象类和接口去展现。对于软件系统的功能扩展,我们可以通过继承、重载或者委托等手段实现。

2、学习掌握接口的概念和定义接口的方法。
(1)如果预计要创建类的多个版本,则创建抽象类。抽象类提供简单的方法来控制类版本。? (2)如果创建的功能将在大范围的异类对象间使用,则使用接口。(3)如果要设计小而简练的功能块,则使用接口。?

3、学习使用Cloneable接口和clone方法进行对象内容的复制。
继承主要是只能把共用的并且对所有子类来说基本上不会有特别处理的部分提到父类中。这叫共性,目的不是为了节省代码。你只需要记住在编程中减少敲键盘次数永远不是编程语言设计的目的(部分网络

4、理解浅复制和深复制的概念,掌握覆盖clone方法进行对象内容深复制的技术。
二、实验任务:
1、学习掌握抽象类的概念和使用方法。
开闭原则 Java web中开闭原则(OCP)是指软件实体至于开闭原则的具体抽象实现方面,可以通过Java的抽象类和接口去展现。对于软件系统的功能扩展,我们可以通过继承、重载或者委托等手段实现。
程序要求:
(1)首先创建一个类家族,其中抽象类几何图形类GeometricObject为父类,圆类Circle和矩形类Rectangle为子类。几何图形类GeometricObject中定义保护型字符串变量color,表示图形的颜色;该类要具备构造方法和两个抽象方法findArea和findPerimeter,抽象方法findArea求图形面积,抽象方法findPerimeter求图形周长。
(2)Circle类和Rectangle类是GeometricObject类的子类,其中应实现父类的抽象方法。
(3)程序主方法中创建两个几何对象,一个圆和一个矩形,并用GeometricObject类的引用变量引用它们,调用抽象方法。
2、学习接口的概念和利用接口实现多态的方法。程序要求如下:
(1)首先创建圆类Circle和圆柱体类Cylinder,其中Circle类是父类,Cylinder类是子类;
(2)创建接口Comparable,其中包含一个抽象方法compareTo,用来比较对象的大小。抽象方法compareTo的形式如下:
public int compareTo(Object o);
(3)创建类ComparableCircle,该类为Circle类的子类,并实现Comparable接口。
(4)创建类ComparableCylinder,该类为Cylinder类的子类,并实现Comparable接口。
(5)创建通用类Max,其中包含通用方法max,只要类实现了Comparable接口,就可以使用max方法返回两个对象中较大的一个。Max方法的方法名称为:
public static Comparable max(Comparable o1, Comparable o2)
(6)程序的主方法中分别创建两个ComparableCircle类对象和两个ComparableCylinder类对象,并分别以它们为参数调用max方法,返回两个对象中面积较大的一个。
3、选做题:进一步深入学习多态特性以及利用Cloneable接口和clone方法实现对象内容的拷贝,并学习消除浅拷贝(浅复制)的方法。程序要求如下:
(1)创建Circle类,表示圆;
(2)创建Name类,表示人名,其中包含三个String类型的数据成员:firstName,middlName和lastName。
(3)创建CloneableCircle类,CloneableCircle类是Circle类的子类,并实现了Cloneable接口。要求CloneableCircle类中有一个Name类型的数据成员creator,代表圆对象的创建者姓名。
(4)在CloneableCircle类中实现clone方法,以实现两个CloneableCircle类对象内容的克隆。要求实现对象内容深拷贝(深复制)。
(5)为了实现CloneableCircle类对象的深拷贝,Name类也应该实现Cloneable接口,并实现clone方法。
(6)程序的主方法中使用clone方法完成两个CloneableCircle类对象的深拷贝。
三、实验步骤:
1.参考代码:
abstract class GeometricObject{
protected String color;
protected double weight;
protected GeometricObject(String color, double weight) {
this.color = color;
this.weight = weight; }
public abstract double findArea();
public abstract double findPerimeter();}
class Circle extends GeometricObject{
protected double radius;
public Circle(double radius) {
super(\
this.radius = radius; }
public double findArea() {
return radius*radius*Math.PI; }
public double findPerimeter() {
return 2*radius*Math.PI; }}
class Rectangle extends GeometricObject{
protected double width;
protected double height;
public Rectangle(double width, double height) {
super(\
this.width = width;
this.height = height; }
public double findArea() {
return width*height; }
public double findPerimeter() {
return 2*(width + height); }}
public class TestAb{
public static void main(String[] args) {
GeometricObject a1 = new Circle(5);
GeometricObject a2= new Rectangle(5, 3);
test(a1);
test(a2); }
public static void test(GeometricObject a) {
System.out.println(a.findArea()); }}
2.参考代码://Circle类的实现
class Circle {
protected double radius;
public Circle() {
radius=1.0; }
public Circle(double r) {
radius=r; }
double getRadius(){return radius;}
public double findArea() {
return radius*radius*Math.PI; }}// Cylinder的实现
class Cylinder extends Circle{
private double length;
public Cylinder() {
super();
length = 1.0; }
public Cylinder(double r, double l) {
super(r);
length = l; }
public double findArea() {
return 2*super.findArea()+(2*getRadius()*Math.PI)*length; }
public double findVolume() {
return super.findArea()*length; }}// ComparableCircle类的实现
class ComparableCircle extends Circle implements Comparable{
public ComparableCircle(double r) {
super(r); }
public int compareTo(Object o) {
if (findArea() > ((Circle)o).findArea())
return 1; else if (findArea() < ((Circle)o).findArea())
return -1; else
return 0; }}// ComparableCylinder类的实现
class ComparableCylinder extends Cylinder implements Comparable{
ComparableCylinder(double r, double l) {
super(r, l); }
public int compareTo(Object o) {
if (findVolume() > ((Cylinder)o).findVolume())
抽象类:public abstract class Shape {public void getArea();}接口:public interface Shape{public void getArea();}内容来自www.book6789.com请勿采集。
声明:本网内容收集自互联网,旨在传播知识仅供参考,不代表本网赞同其观点,文字及图片版权归原网站所有。