# 继承
继承
1.1继承的作用
继承属于面向对象三大特性中的第二项特性
在我们写代码定义类时,可能会有很多相同的属性和方法,那么未来继续编写类似的类,这些属性还会重复,很麻烦,继承既可以优化这种情况
1.2继承介绍
继承时Java中实现代码重用的重要手段之一,在继承概念中会引申出“父类”和“子类”,就像现实生活中的父子一样,子女时父辈的继承热,可以继承父辈的财产。Java中只支持单根继承,即一个类只能有一个直接父类(你只能有一个亲生父亲)
1.3继承的使用
第一步,编写父类(将子类中公有(会重复的)的属性和方法提取到父类中)
public class Pet{
// 公共的属性和方法(会重复的属性方法)
}
第二步,编写子类,继承父类(继承家产,接手父亲留下的遗产)这样子类就拥有了父类中的方法和属性,只需要再写自己独有的内容即可。
public class Dog extends Pet{
// 子类特有的属性和方法
}
1.4super关键字
super和this类似,this表示当前类的一个实例,而super表示当前类的父类的一个实例。都是一个“实例代词”
比如:教室门开了,小明进来了,我们可以说时 他进来了,小强进来了,我们也可以说时他进来了,谁现在进来了,谁就是所谓的“他”。
1.super代表父类对象,只能出现在子类的方法和构造方法中。
2.在子类构造方法中调用且必须时第一句。
3.不可以访问父类中定义未private的属性和方法。
- 访问父类构造方法
super();
super(XXXX);
- 访问父类属性
super.name;
- 访问父类方法
super.print();
在这里关于继承情况下的构造方法的调用规则需要简单阐述几点
1.如果子类的构造方法中没有通过super显示调用父类的有参构造方法,也没有同过this显示调用自身的其它构造方法,则系统会默认先调用父类的无参构造。在这种情况下写不写super();语句是一样
2.如果子类的构造方法中通过super显示调用父类的有参构造方法,那将执行父类相应构造方法,而不执行父类无参构造方法。
3.如果子类的构造方法中通过this显示调用自身的其它构造方法,在相应构造方法中应用以上两条规则。
4.特别注意的是,如果存在多级继承关系,在创建一个子类对象时,以上规则会多次向更高一级父类应用,一直到执行*父类Object的无参构造方法为止。
继承的注意事项
1,继承需要子类和父类有is a 的关系。比如 Pet(宠物)is a Dog(狗类)的父类
2.子类只能继承父类非私有的成员,不能继承构造方法,如果不同包,也不能继承默认访问修饰符的成员。
上一篇: numSplits源码分析