Object类、多态
来源:互联网 发布:2017手机号段数据库 编辑:程序博客网 时间:2024/05/24 07:30
1、Object 类
Object类是类层次结构的根类,每个类都使用Object类作为父类,所有对象(包括数组)都实现这个类的方法。
Object类中定义了很多方法,每个类既然是Object类的子类,那么每个类都继承了Object类中的方法。
例如,1、Object类中定义了一个equals()方法:
boolean equals.(Object obj) { 指示其它对象与此对象是否“相等” };返回值为布尔类型。
2、Object类中还有个 toString()方法:
String toString() { 返回该对象的字符串表示 };
3、Object类中还有个getClass() 方法:
Class getClass() { 返回Object的运行时类 };可理解为“反编译”过程,把对象转换成Class类。
4、而 Class 类中有个方法:
String getName() { 以String 的形式返回此Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。 }
代码示例:
class ObjectDemo {public static void main(String[] args){Demo d1 = new Demo();Demo d2 = new Demo();System.out.println(d1.equals(d2)); //判断d1和d2是不是一个对象System.out.println(d1.toString()); //把d1这个对象以字符串形式输出,“类名+@+对象哈希值”Class c = d1.getClass(); //把d1这个对象转成运行时类文件System.out.println(c.getName()); //输出这个类文件的文件名}}class Demo { //extends Object,默认继承Object类}编译运行结果:
2、多态
2.1 多态的定义
多态的思想可以理解为,一个事物的多种体现形态,就是多态。
2.2 多态的体现
现实中的举例:动物这种事物,可以体现成多种形态,比如猫是一种动物,狗也是一种动物,而猫和狗就是动物的多种体现形态。
体现到代码中举例:父类引用指向子类对象,父类引用也可以接收自己的子类对象。
所谓父类引用指向子类对象,就是 new一个子类对象,但是命名的变量定义为父类的类型。
多态通常伴随着向上转型和对象类型的强制转换。(参考继承的那篇博客)
多态代码示例:
class Animal { public void eat(){ System.out.println("动物"); } public void cc() { System.out.println("CC"); }}class Cat extends Animal { public void eat() { System.out.println("吃鱼"); } public void catchmouse() { System.out.println("抓老鼠"); }}class Dog extends Animal { public void eat() { System.out.println("吃骨头"); } public void kanjia() { System.out.println("看家"); }}class DuoTaiDemo{ public static void main(String[] args){ Animal c = new Cat(); //父类引用指向子类对象,即多态 c.eat(); c.cc(); }}
编译运行结果:
2.3 多态的前提
必须是类与类之间有关系,要么继承,要么实现。
通常还有一个前提:存在方法覆盖,也叫重写。
2.4 多态的好处
多态的出现提高了程序的扩展性和后期可维护性。
2.5 多态的弊端
多态提高了程序的可扩展性,但是只能使用父类的引用访问父类中的成员。
如果想要访问子类的特有方法或者属性,还要强制让父类引用向下转型。
所以多态的出现,一致都是子类在来回转换角色,
向上转型父类引用指向子类对象,或者向下转型,访问子类特有的内容
所以多态的出现,一致都是子类在来回转换角色,
向上转型父类引用指向子类对象,或者向下转型,访问子类特有的内容
2.6 多态中成员的特点
(1)多态中成员函数的特点:
在编译时期:参考引用型变量所属的类中是否有调用的方法。如果有,编译通过;如果没有,编译失败。
在运行时期:参考对象所属的类中是否有调用的方法。
简单总结就是:成员函数在多态被调用时,编译看左边,运行看右边。
(2)多态中成员变量的特点:
无论编译和运行,都参考左边(引用型变量所属的类)
(3)多态中静态成员函数的特点:
无论编译和运行,都参考左边。
- Object类、多态
- 多态、Object
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- HDU1166:敌兵布阵(线段树单点更新)
- IOS文件常用操作
- linux 网络编程:客户端与服务器通过TCP协议相互通信
- Android BuildConfig.DEBUG的妙用
- Jquery.validate 驗證方法擴展小結
- Object类、多态
- Eclipse添加JDK源码
- Android * 设置无标题栏的样式
- JavaWeb 服务启动时,在后台启动加载一个线程
- 游戏截屏
- 在Linux上编译安装apache http server
- 基于vs2010的远程调试方法
- android 正则表达式 判断邮箱格式是否正确
- linux 网络编程:客户端与服务器通过TCP协议相互通信