学习java中的继承
来源:互联网 发布:用友网络股票行情走势 编辑:程序博客网 时间:2024/06/05 20:38
面向对象三大特性----封装、继承、多态,封装自不用 说,继承可以看做是多态的基础,因而继承的重要性不言而喻。作为一个初学者,我把自己学习java继承的心得和总结记录下来,希望请大家多指教。
首先什么是继承呢:
举个例子来说,有这么几个类,学生类/老师类/工人类...他们有公同的属性(如姓名/年龄),有共同的方法(吃饭睡觉),这样,在定义每个类的时候,你都要将这些代码重写一遍,会很麻烦。
你可以写一个人类,将这些共同的属性方法写在这里,这样,再使得这个人类和其他类发生一个关系,使得人类中的东西可以被其他类使用。
这就是继承,它提高了代码的复用性。
继承的格式:
class Fu{} //父类
class Zi extenfs Fu{} //子类,extends关键字
继承有什么好处呢:
1.提高了代码复用性
2.提高代码维护性
3.让类与类之间产生关系,是多态的前提
java中类的继承特点:
1.java中只能单继承,不能多继承。(有些语言支持多继承,格式:类 extends 类1,类2...)
2.java中有多层继承(继承体系) 如:儿子继承父亲类,父亲类可以再继承爷爷类。即,父类可以再有父类。
我觉得还应该注意下面的几个问题:
1.子类只能继承父类非私有的成员(变量和方法),private修饰的不行。
但应该注意一点,子类使用父类的public方法,而public方法使用了父类的private成员,这是可以的。
2.子类不能集成父类的构造方法,但是可以通过super关键字去访问父类的构造方法。
3.不要为了部分功能去继承。继承一些不必要的东西,可能要造成麻烦。
继承是一种“is a”的关系:
人
老师
学生
学生是人,老师是人。 这就是继承体现的关系。子类是父类的一种。
采用假设法。
只要A是B的一种,就可以把A继承于B。
继承中构造方法的关系:构造方法谈不上继承不继承,创建子类的对象,会自动调用父类的构造方法
A:子类中所有的构造方法都会默认访问父类中空参数的构造方法
为什么呢?因为子类继承父类的数据,可能还会使用父类的数据,所以,子类初始化之前,一定要完成父类数据的初始化。
B: 注意m:子类内一个构造方法第一条语句默认都是:super();来默认访问父类的构造方法。
C: 如果父类没了无参构造方法呢?会报错的。怎么办呢?
1.可以自己写一个。这也是为什么我们都要自己写一个无参构造方法的原因之一。
2.用super 显示的去访问父类的构造方法,父类构造方法要什么参数,就用super传什么。
3.还可以在子类的一个有参数构造方法中用this();调用本类的无参数构造方法,再用无参数构造方法中用super(...);去访问父类构造方法。
继承中成员方法的关系:
A:父类与子类方法名相同,怎么办?这时会调用子类的这个方法,就近原则。
这叫方法的重写,也叫方法覆盖,方法复写。父类与子类中出现了完全相同的方法声明,这时候会用子类自己的方法。
B: 方法重写的应用:
例如:
class Phone{public void call(String name){System.out.println("gei"+name+"dadianhua");}}class NewPhone{public void call(String name){//System.out.println("gei"+name+"dadianhua"); //***super.call(name); //***这样可以实现同时使用了父类的同名方法System.out.println("ting天气预报");}}class Demo{public static void main(String[] args){NewPhone nn=new Newphone();nn.call("习大大");}}
C: 方法重写的注意事项:
1.父类中的私有方法不能被重写,本来就不能被继承,当然不能被重写。
2.子类重写父类方法时,访问权限不能更低!默认修饰符比pubilc低。
3.父类中是静态方法,子类覆盖时也只能是静态方法。(其实这根本不是个方法重写,多态中再说。)
4.因此,方法重写时候,子类和父类中方法最好一致。
class Fu{int num;public Fu(String name){}}class Zi extends Fu{public Zi(){}public Zi(String name){super("小王");//默认}}class Domo{public static void main(String[] args){Zi ss=new Zi("小王"); }}
- 学习java中的继承
- java 中的继承学习笔记
- Java学习笔记--继承中的构造方法
- JAVA学习(10) 继承(3) 继承中的构造函数
- JAVA学习(六):JAVA中的继承及其常见问题分析
- 学习C++中的继承
- Java学习之继承中的执行顺序详解
- Java学习笔记——异常中的继承问题
- Java基础学习笔记--继承中的构造函数
- Java学习笔记:类在继承中的多态性
- java中的继承关系
- java中的继承
- Java中的继承
- Java中的继承
- java中的继承
- java中的继承相关内容
- java中的多继承
- java中的继承
- 排序算法Java——插入排序(直接插入排序)
- 旋转变换和平移变换
- CentOS 下安装Redis主从,Redis主从复制,Master-Slave部署架构
- 一些好用的桌面软件
- 人生的起点。。。
- 学习java中的继承
- HDU 2544 最短路(dijkstra,Floyd,spfa)
- JS 学习笔记-1
- 欢迎使用CSDN-markdown编辑器
- 浅入浅出TensorFlow 8
- 封装扩展Kendo UI Grid
- Java数组
- 349. Intersection of Two Arrays
- JAVA多线程—并发库中对“数字”的支持