例子一:
InstanceTest.java
package com.klvchen.exer;
public class InstanceTest {
public static void main(String[] args) {
InstanceTest test = new InstanceTest();
test.method(new Graduate());
}
public void method(Person e) {
String info = e.getInfo();
System.out.println(info);
if(e instanceof Graduate) {
System.out.println("a graduated student");
}
if(e instanceof Student) {
System.out.println("a student");
}
if(e instanceof Person) {
System.out.println("a person");
}
}
}
class Person{
protected String name = "person";
protected int age = 50;
public String getInfo() {
return "Name: " + name + "
" + "age: " + age;
}
}
class Student extends Person{
protected String school = "pku";
public String getInfo() {
return "Name: " + name + "
age: " + age + "
school: " + school;
}
}
class Graduate extends Student {
public String major = "IT";
public String getInfo() {
return "Name: " + name + "
age: " + age + "
school: " + school + "
major" + major;
}
}
运行结果:
例子二:
定义一个测试类GeometricTest,
编写equalsArea方法测试两个对象的面积是否相等(注意方法的参数类型,利用动态绑定技术),
编写displayGeometricobject方法显示对象的面积(注意方法的参数类型,利用动态绑定技术)。
GeometricObject.java
package com.klvchen.exer1;
public class GeometricObject {
protected String color;
protected double weight;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public GeometricObject(String color, double weight) {
super();
this.color = color;
this.weight = weight;
}
public double findArea() {
return 0.0;
}
}
Circle.java
package com.klvchen.exer1;
public class Circle extends GeometricObject {
private double radius;
public Circle(double radius, String color, double weight) {
super(color, weight);
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
@Override
public double findArea() {
return 3.14 * radius * radius;
}
}
MyRectangle.java
package com.klvchen.exer1;
public class MyRectangle extends GeometricObject {
private double width;
private double height;
public MyRectangle(double width, double height, String color, double weight) {
super(color, weight);
this.width = width;
this.height = height;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
@Override
public double findArea() {
return width * height;
}
}
GeometricTest.java
package com.klvchen.exer1;
public class GeometricTest {
public static void main(String[] args) {
GeometricTest test = new GeometricTest();
Circle c1 = new Circle(3.3, "white", 1.0);
test.displayGeometricObject(c1);
Circle c2 = new Circle(3.3, "white", 1.0);
test.displayGeometricObject(c2);
boolean isEquals = test.equalsArea(c1, c2);
System.out.println("c1 和 c2 的面积是否相等: " + isEquals);
MyRectangle rect = new MyRectangle(2.1, 3.4, "red", 2.0);
test.displayGeometricObject(rect);
}
public void displayGeometricObject(GeometricObject o) {
System.out.println("面积为: " + o.findArea());
}
//测试两个对象的面积是否相等
public boolean equalsArea(GeometricObject o1, GeometricObject o2) {
return o1.findArea() == o2.findArea();
}
}