[java]代码库多态:统一行为 多种形式
* 1.继承或者实现
* 2.放法的重写
* 3.父类引用指向对象: 对父类进行声明,指向子类的对象(方法)
*
* 多态的作用:提高代码的维护性 和扩展性
* 维护性 :继承 扩展性:父类具有子类的共性,子类对象通过父类
* 来实现,即向上转型,当子类增加时,就不用重新声明,直接通过父类实现子类的方法
*
*
* 父类类型 变量名 =new 子类对象;
* 变量名.方法名;
* public interface Animal{
* public void eat(){
*
* }
*
* public void sleep(){
*
* }
*
* }
*
* lang 包不用导包
* object(翻译过来:类) 是所有类的父类,若该类有父类,那么就是爷爷类还是可以使用object的方法
* 返回对象的字符串形式
* 类方法:tostring
* equals(object obj)
* 类包同时创:改包名 ,取类名
* system :输出的是地址 即object类中的toString:地址 我们有时想看数组,集合元素 就需要重写类中的tostring 即[1,2,3,4]
* 当类中 有私有变量,重写时生成的都是 [成员变量 +变量值...] 或者改成我们想看到的形式
* objects 是工具类,里面是静态方法 当此对象为空时,object是没法比较的,空指针异常,但objects 提供了
* public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
} 若a!null 且a的内容和b相同 才为true
* to string
*
* equals 可以比较任何类型
* stu1=stu2;若不重写,比较的是俩对象的地址,重写后比较的是内容
*
* @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + num;
return result;
}
@Override
public boolean equals(Object obj)//传过来的对象 {
if (this == obj) //此类和穿过来的是否相等 ==比较的是地址(引用类型)若为基本类型,比较大小
return true;
if (obj == null) // 对象和空比较为false
return false;
if (getClass() != obj.getClass()) 俩类不是同类,为false
return false;
Animal other = (Animal) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (num != other.num)
return false;
return true;
}
* string 内容不可改 在新建string时,先查找内存空间,若存在则直接把地址赋给新建对象
* string str1="123";
* string str2="123"; str1==str2 是对的 虽然string是引用类型,但"123" 在堆中只有一个