java三大特性:(二)继承
来源:互联网 发布:2017怎么做淘宝客赚钱 编辑:程序博客网 时间:2024/06/14 01:37
extends
继承是java面向对象的三大特性之一,是java实现代码重用的重要手段之一。
java中只支持单继承,每个类只能有一个直接父类。
那么子类继承父类会得到父类的哪些特性呢:
- 继承public和protected修饰的属性值和方法,无论子类父类是否在同一个包里。
- 继承默认权限修饰符的属性和方法,但子类和父类必须在同一个包里。
- 无法继承private修饰的属性值和方法。
- 无法继承父类的构造方法。
方法的重写
根据需求对从父类集成的方法重新编写,称为方法重写护着方法覆盖。必须满足以下要求:
- 必须有相同的方法名
- 必须具有相同的参数列表
- 返回值类型必须相同或是其子类
- 不能缩小被重写方法的访问权限
方法重载和方法重写有什么区别和联系??
重载涉及到同一个类中的同名方法,要求方法名相同,参数列表不同,与返回值类型、访问修饰符权限无关。
重写涉及到子类和父类之间的同名方法,要求方法名相同、参数列表相同、返回值类型相同(或是其子类)、访问权限修饰符不能严格于父类。
super关键字
super代表当前对象的直接父类对象的默认引用,在子类中可以通过super关键字来访问父类成员。
super注意事项:
- super必须出现在子类(子类的方法和构造方法)中,而不是其他位置。
- 可以访问父类成员,如父类属性、方法、构造方法。
- 注意访问权限的限制,无法访问private修饰的成员。
Object类的重写
所有java类都直接或者间接地继承了java.lang.Object类。在定义一个类时,没有使用extends关键字,也就没有显示的继承某个类这个类直接继承Object类。
继承条件下的构造方法调用关系
- 如果子类的构造方法中没有super调用父类方法也没有this调用本类相关方法,则默认会先调用父类的无参构造。在此情况下有无super都一样。
- 如果子类的构造方法中通过super调用了父类的有参构造,则不会调用父类的无参构造
- 如果子类this调用,则会在相应构造方法中应用以上两条规则。
- 如果存在多级继承关系,则在创建一个子类对象时,会向更高一级父类应用,直到Object的无参构造为止。
- 执行顺序:父类和子类的静态代码块–父类的构造代码块–父类的构造函数–子类的构造代码块–子类的构造方法。子类的无参构造方法默认会super()。
代码实例:
public class a { public a(){ System.out.println("a的无参构造"); } public a(String name){ System.out.println("a的带参构造"); } static{ System.out.println("a的静态代码块"); } { System.out.println("a的代码块"); } public void as(){ System.out.println("a的方法"); }}
public class b extends a { public b(){ System.out.println("b的无参构造"); } public b(String name){ System.out.println("b的带参构造"); } static{ System.out.println("b的静态代码块"); } { System.out.println("b的代码块"); } public void sd(){ System.out.println("b的方法"); } public static void main(String[] args) { b b1=new b(); b1.sd(); }}
输出如下:
a的静态代码块b的静态代码块a的代码块a的无参构造b的代码块b的无参构造b的方法
abstract和final修饰符
abstract修饰的抽象类和抽象方法特点:
- 抽象类和方法都通过abstract修饰符修饰。
- 抽象类中可以有0个或多个抽象方法。
- 抽象方法只有方法声明,没有方法实现。public abstract void print();
- 有抽象方法的类必须声明为抽象类。
- 抽象类的子类必须重写所有的抽象方法才能够实例化,否则子类还是一个抽象类。
- 抽象方法可以有构造方法。可以被本类中的其他构造方法调用,没有private的话也可以被子类构造调用。
final修饰符方法特点:
1.用final修饰的类,不能再被继承。 2. 用final修饰的方法不能被子类重写。 3. final修饰的变量将变成常量。 4. final不能修饰构造方法。
abstract和final可以对比记忆
static修饰符
http://blog.csdn.net/u012152619/article/details/46003303
清晰到位。
阅读全文
0 0
- java三大特性:(二)继承
- JAVA三大特性之二---继承
- JAVA三大特性--继承
- java三大特性--继承
- Java三大特性--继承
- java三大特性:继承
- java提高篇(二)-----理解java的三大特性之继承
- java提高篇(二)-----理解java的三大特性之继承
- java提高篇(二)-----理解java的三大特性之继承
- java提高篇(二)-----理解java的三大特性之继承
- java提高篇(二)-----理解java的三大特性之继承
- java提高篇(二)-----理解java的三大特性之继承
- java提高篇(二)-----理解java的三大特性之继承
- java提高篇(二)-----理解java的三大特性之继承
- java提高篇(二)-----理解java的三大特性之继承
- java提高篇(二)-----理解java的三大特性之继承
- Java进阶(二)理解Java的三大特性之继承
- java基础总结(二)-----》java三大特性/原则------继承
- 13.UE4中的事件调度(Event Dispatcher)
- leetCode-Pascal's Triangle
- cas4.2.7实现其它登陆系统和cas之间的认证,即其他登陆系统登陆后,cas不需要再次登陆,效果跟cas登陆一样
- 打印报表
- 一起Talk Android吧(第五十一回:Android中的Fragment嵌套二)
- java三大特性:(二)继承
- 数据结构–图(一)
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
- SQL的高级语句---2th
- [8]_谈谈常见的操作系统优缺点以及一些展望
- 输入比赛成绩
- 纷享销客 java开发实习生面经
- Dapper-一个简单的.Net对象映射器
- DFS子集