课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
继承功能可以说是java编程的几大特性中的一个亮点了,今天我们就一起来了解和学习一下,java的继承都有哪些方法可以实现。希望通过对本文的阅读,大家对于java编程有更多的了解,下面就开始今天的主要内容吧。
一丶继承
1.继承的写法
在Java中继承的 关键字是 extends 代表一个类继承另一个类.
继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来的一个新的子类.子类可以继承父类原有的属性跟方法. 也可以自己增加特有的属性跟方法.
2.子类访问父类的方法
上面说了子类继承父类.那么子类也可以调用父类的方法. 我们学过this关键字. this可以区分局部变量跟成员变量.也可以在构造中调用其它构造函数.
那么我们还提供了一个关键字. super() super关键字可以访问父类.
3.重写的概念
子类可以重写父类的方法. 什么是重写.就是子类跟父类的方法是一模一样的. 也就是说,重写是在子类跟父类中才会出现的. 返回值一样. 方法名一样. 参数一样.
在J2SE 5.0 以上.支持了新的功能.也就是说返回值可以不一样.但是 方法名 跟 参数必须一样.
JAVA 类编译的流程. java中.创建子类的时候.会自动调用父类的构造方法进行初始化. 我们可以做个例子. 并且重写一个方法.
二丶Object 类
object类是一个比较特殊类的. 位于java.lang.包中. 它是所有类的父类.比如我们以前学习过字符串类. String类. String类中 我们比较两个对象是否相等就是用.
equleas()方法. 这个就是object类中的.只不过字符串进行了重写. 我们自定义的类也是继承自object类.只不过是默认继承. 所以任何类都可以重写父类object中的方法.
在object类中 加了final类的方法是不能被重写的. 例如 getClass() notify() notifyAll() wait()等等.
object类的方法介绍.
1.getClass()方法
getClass()方法会返回指定是的Class实例. 然后可以使用此时调用getName()获得这个类的名称.
getClass().getName(); 也可以配合toString()方法使用.
2.toString()方法
toString()方法就是返回一串字符串.在object类中,就是讲一个对象返回为字符串形式.实际应用中就是重写这个字符串.返回什么是你自定的.
3.equals()方法;
equals()方法就是比较.当时说过区别. 就是 == 与 equals()的区别. == 是比较地址. equals()是比较你自定的内容.也就是对象的实际内容.通常也是重写.
比较什么你自己定. 如果你写了一个类有一个成员变量是 a; 我们重写equals() 就判断 a 跟 比较对象的a即可. 就是 a 跟 a比较.
三丶对象类型转换.
对象类型转换.包括向上转型.以及向下转型. 通俗理解就是 强转对应的数据类型. 但是你在强转的时候要判断一下是否是这个数据类型.这个就是转型.
向上转型以及向下转型就是说 类我们强转为父类. 也可以父类强转为子类.
1.向上转型
子类对象赋值给父类对象称为向上转型. Anmail a = new Dog(): 这个就是向上转型.
比如我们有动物对象. 跟 狗对象. 狗对象可以看做是动物对象的一个子类.
还比如 四边形类 跟 平行四边形类. 平行四边形 对象可以看做是 四边形类的一个对象.
2.向下转型
向下转型就是 抽象的类转为具体的类. 比如 动物是鸟. 动物是抽象的.不能说他是鸟.所以不和逻辑.而且会出现问题.
比如父类 Anmail a = new Dog();
Dog b = a; 这样是错误的. 我们不能这样赋值.原因就是不能说 动物是狗.
Dog c = (Dog)a; 这样可以.强转为子类型.写法是正确的.
站在C++的角度:
为什么上面向下转型是错误的. 原因是 a 会有一块内存. 我们可以假定为0x20个字节大小. b是Dog也就是子类对象.他继承了父类.有自己特有的成员方法
以及成员变量. 所以它的头0x20个字节是父类的内存.下面多出的内存是自己了.假设是0x30个字节. 所以我们子类转为父类(向上转型)
其实就是把30个字节的内存转为20个字节的内存.所以不会出问题. 但是 0x20个字节.也就是父类转为子类. 就会出为题. 意思就是说 0x20个字节转为0x30个字节.
先我们并不知道是转为0x30个字节.这样内存访问就会出错了.但是如果我们强转了.相当于就是父类在强转为子类的时候.按照子类的内存强转.这样就不会有问题了.
也就是上面的我们的 Dog c c的头0x20个字节是父类. 下面的0x10个字节就是自己特有的所以不会出错.
作者:iBinary
节选:博客园
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!