一.object
定义:object是java所有类的父类,Java中所有类都直接或间接的继承object,Java是单继承机制·,·一个类如果没有显示继承其他类时,就默认他继承object类
常用方法:
1.toString():输出一个对象时会默认调用当前对象的toSteing()方法,打印方法的返回值
2.equals():比较相等,如果相等返回true,否则就返回false
equals与==的区别:
equals:是比较引用数据类型-->地址
==:是比较基本数据类型-->数值
注意:object中的equals的方法比较的是对象的地址
但equals方法可以重写
二.多态
定义:一个事物的多种形态|多种表现形式
表想形式:父亲类型 变量名=new 子类型();
多态的前提条件:
1.继承关系
2.有方法的重写
3.父类变量指向子类对象
多态的特点:多态调用时,会调用子类的重写方法,如果没有重写方法会调用父类中的内容
多态调用的特点:
成员变量:编译运行看父类|左边|类型
成员方法:编译看父类|左边|类型 ,运行看子类|右边|对象(儿子以父亲的身份做父亲的事)
public class Demo02 {
public static void main(String[] args) {
Fu fu=new Zi();//多态
System.out.println(fu.name);
fu.test();//多态调用,输出父类的内容
}
}
class Fu{
String name="zhangsan";
void test(){
System.out.println("Fu");
}
}
class Zi extends Fu{
String name="zhangsanfeng";
void test(){
System.out.println("Zi");
}
}
三.类型转换
向上转型(自动转向提升):父类类型>子类类型
父类类型 变量名=new 子类类型();
向下转型(强制类型转换):
子类类型(小范围类型) 变量名=(小范围类型|子类类型)父类变量名|大范围类型变量名
注意:
1.父类的引用只能调用父类中有的内容,对子类新增内容不可见
2.使用父类的引用多态形式调用时候,不能够调用子类新增的内容,想要调用,需要向下转型
ClassCastException:类型转换异常
instanceof:运行运算符
作用:向下转型容易出现类型转换异常,instanceof可以防止这种异常的出现
定义:可以判断前面的的变量是否是后面类型的对象如果是返回true,如果不是返回false
public class Demo01 {
public static void main(String[] args) {
//向上转型-->多态
KongZiDie k=new KongZi();
k.teach();
//向下转型: 想要调用子类独有内容
if(k instanceof KongZi){
KongZi kk=(KongZi)k;
kk.play();
}else if(k instanceof Brother){
Brother kk=(Brother)k;
kk.play();
}
}
}
class KongZiDie{
void teach(){
System.out.println("做生意....");
}
}
class KongZi extends KongZiDie{
void teach(){
System.out.println("讲论语....");
}
void play(){
System.out.println("玩王者..");
}
}
class Brother extends KongZiDie{
void play(){
System.out.println("玩吃鸡..");
}
}
四.抽象类
定义:被abstract修饰的类就是抽象类,被abstract修饰的方法就是抽象方法
注意:
1.没有方法体,没有{}
2.抽象方法必须存在抽象类中
3.抽象类中可以存在抽象方法,可以存在具体方法(有方法体的方法,但很少)
4.抽象类不能实体化(不能创建对象)
5.抽象类中的方法不需重写
抽象类如何使用:
具体子类:重写所有父类中的抽象方法+按需新增
抽象子类:按需重写父类中的抽象方法+按需新增
五.接口
含义:被interface定义的就是接口(一个特殊的抽象类)
作用:功能的集合(抽象方法的集合)
优点:
1.接口可以多实现,而类只能单继承(只要满足接口的条件就能使用里面的内容)
2. 要按照规范定义
解耦:降低耦合度,提高代码的复用性
在jbk1.7以前接口只存在:
1.公共的静态常量 public static final(默认),但修饰符可以省略
2.公共的抽象方法:public abstract(默认),但可以省略
特点:
1.接口不能实例化(因为接口中有抽象方法)
2.类去实现接口,要使用implements关键字
3.一个类可以有多个接口,但只能继承一个父类
4.一个类既可以实现多个接口也可以继承父类,但要先继承后实现
5.接口和类之间只能类实现接口
6.接口和接口之间,不能实现只能继承,接口可以继承多个接口,而且拥有每个接口中的功能
接口的使用:
1.具体的实现类使用:重写所有的抽象方法+按需新增
2.抽象的实现类:按需重写+按需新增
父类和父接口的区别:
父类:子类继承父类可以直接调用父类的内容
父接口:实现类,只要实现这个接口就能使用里面的功能