object+多态+抽象类+接口
一.object
定义:object是java所有类的父类,Java中所有类都直接或间接的继承object,Java是单继承机制·,·一个类如果没有显示继承其他类时,就默认他继承object类
常用方法:
1.toString():输出一个对象时会默认调用当前对象的toSteing()方法,打印方法的返回值
2.equals():比较相等,如果相等返回true,否则就返回false
equals与==的区别:
equals:是比较引用数据类型-->地址
==:是比较基本数据类型-->数值
注意:object中的equals的方法比较的是对象的地址
但equals方法可以重写
二.多态
定义:一个事物的多种形态|多种表现形式
表想形式:父亲类型 变量名=new 子类型();
多态的前提条件:
1.继承关系
2.有方法的重写
3.父类变量指向子类对象
多态的特点:多态调用时,会调用子类的重写方法,如果没有重写方法会调用父类中的内容
多态调用的特点:
成员变量:编译运行看父类|左边|类型
成员方法:编译看父类|左边|类型 ,运行看子类|右边|对象(儿子以父亲的身份做父亲的事)
[code]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
[code]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.抽象的实现类:按需重写+按需新增
父类和父接口的区别:
父类:子类继承父类可以直接调用父类的内容
父接口:实现类,只要实现这个接口就能使用里面的功能
- 点赞
- 收藏
- 分享
- 文章举报
- 深入继承 - 抽象类和接口
- 接口只用于定义类型
- 为什么 Java 接口中不允许定义变量
- C#基础知识整理:基础知识(8) 接口
- 实例讲述C#“接口方法匹配规则”
- IValueConverter 接口实现
- Android 2.3网络访问时,使用Authorization字段对接口加验证的问题
- 接口声明-抽象类空实现-继承重写来实现适配器的模式
- aidl(android 接口定义语言)
- 微信公众平台消息接口开发(20)图片识别之人脸识别
- 抽象类和接口
- C#接口的三种实现方式
- uart中:起始位,停止位,就校验位,数据位,数据位的位数,波特率,数据通讯的接口定义
- java后台HttpClient调用http接口实例
- RobotFrameWork接口项目分层及通用控制方式
- Laravel5.4 简单实现app接口 Api Token认证
- 接口自动化:HttpClient + TestNG + Java(三) - 初步封装和testng断言
- JDBC的学习(第七节:使用CallableStatement接口调用存储过程 )
- 接口和抽象类有什么区别?
- 转C#实现QQ接口软件--QQ的HTTP接口协议探究