一:
Object类 老祖宗类
是java所有类的父类
java中的所有类都会直接或者间接的继承自Object类
因为java单继承机制,如果一个类有显示的继承其他类,如果没有显示继承,会默认继承自Ojbect类
常用的方法:
1) toString() 把对象以字符串的形式显示
当打印一个对象的引用时候,会先调用对象的toString()方法,打印的是方法的返回值
当打印对象引用时候,默认调用toString()方法,而Object类中的toString()会打印对象的地址,如果想要打印对象的信息(所有成员属性的值),需要在子类中重写toString()方法
二:
java中的面向对象三大特性之一的多态:
多态:一种事物的多种形态|多种表现形式
多态的表现形式:
父类的引用(直接父类|间接父类)指向子类的对象
多态的前提:
类的继承|接口的实现
多态的使用特点:
多态引用调用的时候,会调用子类中重写的方法,如果没有重写,会调用父类的内容
多态调用时,会子类新增内容不可见
多态调用类中成员的特点:
成员变量
编译运行看父类|左边|类型
成员方法
编译看父类|左边|类型,运行看子类|右边|对象
三:
转型:
孔子装爹:
class 孔子爹{void teach(){讲做生意…}}
class 孔子 extends 孔子爹{void teach(){讲论语…}; void play(){玩王者…}}
class 孔子兄弟 extends 孔子爹{void play(){玩吃鸡…}}
一天有人来找孔子爹授课,但是孔子爹外出,孔子决定化妆,装成他爹的样子去授课
向上转型–>化妆 -->自动类型提升 父类类型>子类类型
孔子爹 k=new 孔子();
去授课,调用teach能力,但是孔子不会做生意,只能讲论语,调用的孔子teach的能力
k.teach();
约定和同学们一起开黑,孔子爹不会打游戏,只能孔子会,孔子需要卸妆,变成自己的样子,然后再去打游戏
向下转型->卸妆–>强制类型转换
小范围类型 引用 = (小范围类型)大范围类型数据;
孔子 kk=(孔子)孔子爹;
kk.play();
父类的引用只能调用父类中有的内容,对子类新增内容不可见
如果使用父类的引用多态形式调用时候,不能够调用子类新增的内容,想要调用,需要向下转型
ClassCastException 类型转换异常:
当向下转型时候,可能会出现类型转换异常,为防止这中异常出现–>介绍一个运行运算符 instanceof
引用 instanceof 类型
判断前面的引用是否是后面类型的对象|是否是后面类型子类的一个对象,如果是返回true,如果不是返回false
四:
抽象类: 被abstract修饰的类就是抽象类
抽象方法: 被abstract修饰的方法就是抽象方法
没有方法体
必须存在抽象类中
定义开发部门:
java攻城狮
work()
web前端开发攻城狮
work()
子类抽取共性->提出像的地方,定义在父类中
开发 Develop work()
注意:
1.抽象方法必须存在与抽象类中
2.抽象类中可以存在抽象方法,可以存在具体方法(有方法体的方法)
3.抽象类不能实例化(创建对象)
4.抽象方法必须被重写
5.抽象类如何使用:
1.具体子类:重写所有父类中的抽象方法+按需新增
2.抽象子类:按需重写父类中的抽象方法+按需新增
6.抽象方法如果一旦被重写,须后可以按需重写
父类:
具体父类
抽象类
五:
接口:
使用interface定义接口
是一个特殊的抽象类
接口的优点:
接口可以多实现,而类只能单继承
接口定义规范
解耦: 降低耦合度
提高代码的复用性
工作中接口的作用:->功能的集合->抽象方法的集合
父类->子类继承父类->子类继承了父类,就有权使用父类中的内容
父接口->实现类->实现类实现一个接口,就拥有了接口中定义的能力
父类:子类可以继承了父类,就可以直接调用期功能等内容
接口:实现接口,实现两个字,对父类中的抽象方法,功能的集合这些功能,要重写这个方法
接口的定义:
jdk1.7及之前接口中只能存在:
1) 公共的静态的常量 public static final
修饰符可以按需省略,默认public static final
2) 公共的抽象的方法 public abstract
修饰符可以按需省略,默认public abstract
特点:
1.接口不能实例化(因为接口中有抽象方法)
2.类去实现接口 使用implements关键字
3.一个类可以实现多个接口,但是只能继承一个父类
4.如果一个类既实现了多个接口,也继承了父类,需要先继承后实现
5.接口和类之间只能类实现接口
6.接口和接口之间,不能实现只能继承,接口可以多继承接口,就拥有了每一接口中的功能
-
7.接口的使用
-
具体的实现类使用:重写所有的抽象方法+按需新增
-
抽象的实现类:按需重写+按需新增
- 注意:以后如果能够使用接口,推荐使用接口