Object类:
1.所有类的父类
2.重写toString(),equals()方法
q1.==与equals()方法的区别:不重写没区别,重写后:==比较地址值;equals()比较内容
手动重写equals()方法
public boolean equals(Obj obj){
if(obj instanceof Xxx){
if(obj==this){
return true;}
else if(obj.xxx==this.xxx){
return true;
}
else{
return false;
}
}
else{return false;
}
}
多态性:
多态性的基础:继承和方法的重写;
为什么要有多态性:
.增加代码的复用性与简洁性;
使用方法:
父类 变量名= new 子类();体现了多态性
a
注意:1.此时a是一个“父类",不可以调用子类专属的方法,只能调用子类重写的或者父类本身就有的方法
2.在执行方法过程中,优先调用子类重写的方法,要使用父类的未重写方法时,得用super关键字
而关于super关键字,其既可以在此调用父类的方法和属性,也可以用来调用构造器;
在继承关系中,子类的构造器在没有显示指定构造器的情况下,自动默认调用super(),即父类空参构造器(当父类中重写构造器导致无默认空参构造器时,即导致子类构造器报错)
instanceof关键词和向下转型:
instanceof关键词:用来判断一个对象obj,是否是指定类的实例,从而便于进行向下转型
向下转型:(类型)变量名 向下转型后,即可以调用子类特有的属性与方法;
开发中多态的用法:
面向多态(接口)编程:
通过多态性,实例化实现类,补充接口(抽象类)里的抽象方法
例:interface Usb{
}
class Mouth implements Usb{ class KeyWord implements Usb{
} }
Usb user = new Mouth();
Usb user = =new KeyWord;
内部类:
1.成员内部类:
class OutClass{
class InnerClass{
}
}
实例化内部类:OuterClass outer = new OuterClass();
OuterClass.InnerClass innerclass = outer.new Innerclass();
注意:内部类可以调用外部的属性和方法(OuterClass.this.方法)
2.匿名内部类:
用于接口的实例化:
Interface inerface{
}
class TestInterface implements interface{
@override
Interface inner =new Interface();//本质是类的实例化
}