1、Shap类
package com.yfs.javase; public class Shape /*extends Object */{ //默认继承object object方法全部继承 //计算面积方法 public double getArea() { System.out.println("计算面积"); return 0; } }
2.Circle类
package com.yfs.javase; public class Circle extends Shape { private double r; public Circle(double r) { this.r = r; System.out.println("创建圆形面积"); } public double getArea() {//覆盖父类的方法 System.out.println("计算圆形面积..."); return 3.14 * r * r; } }
3.Rangton类
package com.yfs.javase; public class Rangton extends Shape { private double width; private double length; public Rangton(double width, double length) { this.width = width; this.length = length; System.out.println("创建矩形面积"); } public double getArea() { System.out.println("计算矩形面积..."); return width * length; } }
4.Trantangel类
package com.yfs.javase; public class Trantangle extends Shape { private double height; private double width; public Trantangle(double height, double width) { this.height = height; this.width = width; System.out.println("创建三角形面积"); } public double getArea() { System.out.println("计算三角形面积..."); return 1.0 / 2 * width * height; } }
5.Shap 测试
package com.yfs.javase; import java.util.Date; import java.util.Random; import java.util.Scanner; public class Demo1 { /** * @param args */ public static void main(String[] args) { Shape shape = new Shape(); shape.getClass(); Object obj = new Object();// 所有对象的基类 // 方法 boolean isTrue = obj.equals(shape); System.out.println(isTrue); obj.getClass(); obj.hashCode(); obj.toString(); //obj.notify(); obj = shape; obj = new Random(); obj = new Scanner(System.in); Circle c = new Circle(2); obj = c; shape = c; obj = shape; //继承object c.getClass(); method(shape); //method(new Date()); } public static void method(Object obj) { //obj.getArea(); Shape s = (Shape)obj; s.getArea(); } }
6.Person 类(自定义比较)
package com.yfs.javase; public class Person { private String name; private char sex; private int age; public Person() { } public Person(String name, char sex, int age) { this.name = name; this.sex = sex; this.age = age; } @Override public String toString() { return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void sayHello() { System.out.println(name + " Hello ...."); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + sex; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Person other = (Person) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (sex != other.sex) return false; return true; } // @Override // public int hashCode() { // return 123; // } // // @Override //自定义类 覆盖equals方法 自己定义对象比较规则 // public boolean equals(Object obj) { // Person other = (Person)obj; // return this.name.equals(other.name) && sex == other.sex && age == other.age; // } }
7.Person测试
package com.yfs.javase; public class Demo2 { /** * @param args */ public static void main(String[] args) { Person p1 = new Person(); System.out.println("p1.hashCode() : " + p1.hashCode()); Person p2 = new Person();//hashCode对象的散列码 System.out.println("p2.hashCode() : " + p2.hashCode()); Person p3 = new Person(); System.out.println("p3.hashCode() : " + p3.hashCode()); p1.sayHello(); p2.sayHello(); p3.sayHello(); System.out.println("p1 == p2 ? " + (p1 == p2)); } }
8.Person类
package com.yfs.javase; public class Demo3 { /** * @param args */ public static void main(String[] args) { Person p1 = new Person("张三",'男',20); Person p2 = new Person("张三",'男',20); System.out.println("p1 == p2 : " + (p1 == p2)); //比较对象中属性只是否相等 System.out.println(p1.getAge() == p2.getAge()); System.out.println("== " + (p1.getName() == p2.getName())); System.out.println("equals : " + p1.getName().equals(p2.getName())); System.out.println("p1.equals(p2) : " + p1.equals(p2)); System.out.println("======================"); System.out.println("p1.hashcode :" + p1.hashCode()); // String s1 = new String("abc"); // String s2 = new String("abc"); // System.out.println("s1 == s2 : " + (s1 == s2)); // System.out.println("s1.equals(s2) : " + s1.equals(s2));//String 类覆盖equals方法 Object obj = p1; System.out.println(obj.getClass().getName()); // } }