Java基础之(继承)
来源:互联网 发布:淘宝上自粘墙纸有毒吗 编辑:程序博客网 时间:2024/05/21 08:38
1、继承语法规则:
class 子类extends 父类
例如:class Dog extends Animal{...}
继承的好处:子类拥有父类的所有属性和方法,父类中private修饰的属性不能继承。
2、方法的重写:
当子类对继承父类的方法不满意时,可以重写父类继承的方法,当调用方法时,优先调用子类的方法。
重写的规则:返回值类型、方法名、参数类型及个数都要与父类继承的方法相同。
3、继承的初始化顺序:
初始化父类再初始化子类;限制性初始化对象中的属性,再执行构造方法中的初始化。
package com.imooc;public class Animal {public int age=10;public String name;public Animal(){System.out.println("Animal类执行了");age=20;}public void eat(){System.out.println("动物具有吃东西的能力");}}输出结果是:animal age:20(所以说age=10因为先执行,而被覆盖掉!)
4、final关键字,最终的。可以修饰类、方法、属性和变量。
final修饰类:则该类不允许被继承。
final修饰方法:则该方法不允许被覆盖(重写)。
final修饰属性:则该类的属性不会进行隐式的初始化,所以类的初始化属性必须有值,或者在构造方法中赋值。
final修饰变量:该变量的值只能赋值一次值,即变成常量。
5、super关键字:在对象的内部使用,可以代表父类对象。
访问父类的属性super.age
访问父类的方法super.eat()
package com.imooc; public class Animal {public int age=10;public String name;public Animal(){System.out.println("Animal类执行了");}public void eat(){System.out.println("动物具有吃东西的能力");}}
package com.imooc;public class Dog extends Animal {public int age=20;public Dog(){System.out.println("Dog类执行了");}public void eat(){System.out.println("狗具有吃骨头的能力");} public void method(){System.out.println("父类对象的值"+super.age);System.out.println("子类对象的值"+age);}}
package com.imooc;public class Initial {public static void main(String[] args) {Dog dog=new Dog();;dog.method();}}运行结果:
Animal类执行了
Dog类执行了
父类对象的值10
子类对象的值20
5、子类的构造过程中,必须调用其父类的构造方法。其实就是隐式的使用了super关键字。
package com.imooc;public class Dog extends Animal {public int age=20;public Dog(){super();System.out.println("Dog类执行了");}}
package com.imooc;public class Initial {public static void main(String[] args) {Dog dog=new Dog();}}运行结果:
Animal类执行了
Dog类执行了
所以说super()写和不写是相同的结果。
如果子类的构造方法中没有显示的调用父类的构造方法,则系统默认调用父类无参的构造方法。
如果显式调用,super()必须放在子类构造方法的第一行。否则报错:Constructor call must be the first statement in a constructor.
如果子类的构造方法中没有显式调用父类的构造方法,而父类又没有无参的构造方法,则编译报错:
Implicit(隐式的) super constructor Animal() is undefined. Must explicitly(显式的) invoke another constructor
- Java基础之(继承)
- Java基础之继承
- JAVA基础之继承
- JAVA基础之继承
- java基础之继承
- java基础之----继承
- java基础之继承
- java基础之继承
- Java基础之继承
- java基础之【继承】
- java基础学习之(一):继承
- Java 基础之(七) 继承
- java基础之继承 (一)
- java基础之继承(二)
- Java基础之005-继承
- Java基础之005-继承
- Java基础之005-继承
- Java基础之继承意义
- Intent 属性参数
- Sublime Text3常用插件安装
- Android开发-自定义View-AndroidStudio(十六)侧滑删除
- Android进阶之使用Intent传递对象02
- 使用Spannable或Html.fromHtml设置字体、颜色、超链接等
- Java基础之(继承)
- 解决webview加载网页出现白屏的问题
- 蓝牙解析(part2):协议架构分析
- ADB工具安装对真机进行Monkey测试的环境搭建
- MFC对话框程序EDIT类控件的自动换行,垂直滚动条自动下移
- ORALCE 外连接
- R 教你做炫酷的--共线性系数展示
- Android studio项目提交到github失败处理
- 《学习之道》读书笔记