//几何类
package com.day23.test;
//几何类
public class GeometricObject {
protected String colorString;
protected double weight;
public GeometricObject(String colorString, double weight) {
super();
this.colorString = colorString;
this.weight = weight;
}
public GeometricObject() {
colorString="white";
weight=1.0;
}
public String getColorString() {
return colorString;
}
public void setColorString(String colorString) {
this.colorString = colorString;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
}
//圆类
package com.day23.test;
//圆的类
public class Circle extends GeometricObject{
protected double radius;
public Circle() {
super();
this.radius = 1.0;
}
public Circle(String colorString, double weight, double radius) {
super(colorString, weight);
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
//求圆的面积
public double findArea() {
return 3.14*radius*radius;
}
//重写equals 方法 对比两个圆的半径是否相等
@Override
public boolean equals(Object obj) {
// System.out.println("=====================");
// System.out.println(this.toString());
// System.out.println(obj.toString());
// System.out.println("=====================");
// TODO Auto-generated method stub
// return super.equals(obj);
if(this ==obj) {
System.out.println("3333333333333333");
return true;
}
//判断是否是一个实例
//instanceof 说明
// 在面向对象 多态的概念中
// 如果声明是父类 实例化是子类的时候
// 这时候声明的父类想使用子类的特有的方法
// 就要先使用 instanceof 判断 声明的对象 是否是这个类的实例
// 如果 返回true 就可以使用向下强转 来调用子类特有的方法
//例:
// 声明 父类 = new 子类
//Person p2=new Man();
// 多态的表现形式
// 这时候 判断 声明的对象是否是子类的实例化
//if(p2 instanceof Man) {
// 如果是 强转这个类型 调用相对应的方法
// Man m2= (Man)p2;
// m2.earnMoney();
// System.out.println("22222");
// }
if(obj instanceof Circle) {
Circle circle= (Circle)obj;
return this.radius==circle.radius;
}
return false;
}
public Circle(double radius) {
this.radius = radius;
}
//重写 toString
@Override
public String toString() {
return "Circle [radius=" + radius + "]";
}
}
测试类
package com.day23.test;
import java.util.Date;
public class Test {
public static void main(String[] args) {
System.out.println("Object类 他在java.lang包下面");
Order order = new Order();
System.out.println(order.getClass().getSuperclass());
//equals() 方法 比较两个对象是否相同
String str1=new String("Json");
String str2=new String("Json");
System.out.println(str1.equals(str2)); //true
// == 与 equals方法区别
//如果自定义的类 使用equals() 方法 比较的是内存地址 虽然内容一样
// 但是内存地址不同 所有返回false
// 如果使用的是内置的类 比如 String \ Date \ File 等这些类
// 比较的是 内容 因为这些内置的类 对 obj中的equals方法进行了重写
// toString 方法
System.out.println(str1.toString());
//练习题
//创建两个circle类 判断其颜色是否相等
//利用 equals 判断两个半径是否相当
//利用重写的 toString 方法 输出半径
Circle circle1=new Circle(2.3);
Circle circle2=new Circle("white",2.3,2.3);
System.out.println("颜色是否相等:"+circle1.getColorString().equals(circle2.getColorString())); //true
System.out.println(circle1.equals(circle1));
//直接输出 circle1 对象 会直接调用重写的 toString() 方法
//如果没有重写 则会放回 地址值和类名
//System.out.println(circle1);
//System.out.println(circle2.toString());
}
}
class Order{
}