Java的继承,final关键字,super关键字
1、继承的初始化顺序:
父类—>父类的初始化对象中的属性—>父类的构造方法—>子类—>子类的初始化对象中的属性—>子类的构造方法
若有构造方法:则先执行属性,再执行构造方法
若构造方法中没有对name属性进行赋值,则name的值为类属性所赋的值
package com.wangcf;
//父类
public class Animal {
public String name="属性的初始化";
public int age;
public void eat(){
System.out.println("动物可以吃东西");
} public Animal(){
name="构造方法的初始化";
System.out.println("父类的构造方法执行了");
}
}
package com.wangcf;
//子类
public class Bridge extends Animal{
public String name="子类属性";
public Bridge(){
System.out.println("子类的构造方法执行了");
}
}
package com.wangcf;
//测试类
public class Test { public static void main(String[] args) {
Bridge bri=new Bridge(); //测试初始化顺序
System.out.println(bri.name); //测试属性的赋值方式
System.out.println("=============");
Animal ani=new Animal();
System.out.println("输出值为:"+ani.name); //测试属性的赋值方式
}
}
2.fianl
可以修饰类,则该类不能被继承
可以修饰方法,则该方法不能被重写
可以修饰属性:则该类的属性不会进行隐式的初始化,也就是必须赋值final int a=1,正确;fianl int a;错误
或者在构造方法中赋值
以上两种方式选择一种
可以修饰变量:则只可以赋值一次,那么就是常量了
3.super关键字
在子类的对象的内部使用,可以代表父类对象,访问父类属性super.abc和方法super.abc();super()是父类不带参数的构造方法,super(int i,String s)父类带参数的构造方法?
package com.wangcf;
//父类
public class Animal {
public String name="父类的名字"; public void eat(){
System.out.println("父类:动物可以吃东西");
}
}
package com.wangcf;
//子类
public class Bridge extends Animal{
String name="子类的名字";
public void eat(){
System.out.println("子类:鸟儿喜欢吃虫子");
} public void method(){
System.out.println(name); // 调用子类的属性
System.out.println(super.name); //调用父类的属性
eat(); //调用子类的方法
super.eat(); //调用父类的方法 }
}
package com.wangcf;
//测试类
public class Test { public static void main(String[] args) {
Bridge bri=new Bridge();
bri.method();
}
}
super的应用:
子类的构造过程当中必须调用父类的构造方法,因为子类在初始化时需要先初始化父类,在这里隐式地使用了super关键字,在子类的构造方法中是这样的:
public Bridge(){
super(); //此处写或者不写效果一样
}
如果子类的构造方法中没有显式地调用父类的构造方法那么系统默认调用父类无参的构造方法
如果显式地调用构造方法,必须在子类的构造方法的第一行
如果子类构造方法中既没有显式调用父类的构造方法,而父类又没有无参的构造发放,那么久会编译出错
Java的继承,final关键字,super关键字的更多相关文章
- JavaSE复习日记 : 继承关系和super关键字以及继承关系中方法的覆写
/* * 类的继承和super关键字 * * 软件开发的三大目的: * 可拓展性; * 可维护性; * 可重用性; * * 这里单说下可重用性这一项: * 为了代码复用,复用方式有: * 函数的调用复 ...
- JAVA笔记5__构造块、静态块/单例设计模式/继承/final关键字/super关键字
public class Main { { //构造块(在构造对象时调用,先于构造方法执行) System.out.println("我是构造块!"); } static{ //静 ...
- java继承中关于super关键字和this关键字的使用
1.super关键字 由于子类不能继承父类的构造方法,因此,如果要调用父类的构造方法,可以使用 super 关键字.super 可以用来访问父类的构造方法.普通方法和属性.super 关键字的功能: ...
- 理解Java中的final和static关键字
回顾这两个关键字前,先考虑一个问题: Static变量存储在JVM中的位置,或者说static变量是如何被加载的? JVM会把类的静态方法和静态变量在类加载的过程中读入方法区(Method Area) ...
- Java基础之final和static关键字
一.final 根据程序上下文环境,它可以修饰非抽象类.非抽象类成员方法和变量. final类不能被继承,没有子类,final类中的方法默认是final的. ...
- Java基础之final和abstract关键字
final final在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编 ...
- Java基础系列--this、super关键字
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/8483623.html 一.概述 Java中this有两种用途,一种是用于指代当前对象,一种 ...
- Java基础之this和super关键字用法
this 在java中,this是一个引用当前类对象的引用变量,主要有以下几种用法: 引用当前类的实例变量· this关键字可以用来引用当前类的实例变量.如果实例变量和某个方法的参数之间存在歧义(实例 ...
- OC基础--self关键字&super关键字
PS:OC中的self关键字可以与C#中的this关键字区分记忆,虽然区别还是很大的. OC中的super关键字指的是父类指针 一.self关键字必须了解的知识: 1.使用场合:只能用在方法中(对象方 ...
- JAVA构造方法,继承关系和SUPER关键字
SUPER可调用父类的构造方法,但要注意默认调用和参数调用. 同时,在继承类时,可以用SUPER调用其它非构造方法哟. class Test extends Object{ public Test() ...
随机推荐
- Redis事件
Redis事件 Redis的ae(Redis用的事件模型库) ae.c Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件: 文件事件(file event):Redis服务器通过套接字与 ...
- laychat聊天功能
windows版本:1.直接下载laychat聊天室压缩包,并解压到PHPstudy本地PHP环境中去:2.进入E:\PHPTutorial\WWW\laychat-master\vendor\Wor ...
- MyOD课堂实践(5月31日)20155318
MyOD课堂实践(5月31日)20155318 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 (码云链接) 代码 import java.io ...
- 20155321 2016-2017-2《Java程序设计》课程总结
20155321 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:我期望的师生关系 预备作业2:学习情况的相关调查 预备作业3:安装虚拟机以及学习Linu ...
- 20155325 2016-2017-2 《Java程序设计》第3周学习总结
教材学习内容总结 别用==直接比较浮点数运算结果. Integer默认值-128到127,若超出,需要修改系统属性,所以最好通过equals()比较. 系统错误提示:若超出数组范围,则显示ArrayI ...
- 20155338 2016-2017-2 《Java程序设计》第10周学习总结
20155338 2016-2017-2 <Java程序设计>第10周学习总结 教材学习内容总结 网络编程 · 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事 ...
- 20145226夏艺华 《Java程序设计》实验报告五
实验五 Java网络编程及安全 实验内容 运行下载的TCP代码,结对进行 利用加解密代码包,编译运行代码,结对进行 集成代码,加密后通过TCP发送 结对伙伴:20145203 马超 实验步骤 (一)中 ...
- 【转】odoo学习之:API整合文档
Odoo8.0新API文档 一.新API概述 在8中,api接口分为traditaional style和record style,traditional style指的就是我们在7中使用的类型,de ...
- Python:静态方法、类方法、实例方法
1. 静态方法@staticmethod (1)无需自身对象的self参数和自身类的cls参数,可直接通过 类名.方法名 进行调用 (2)Python中并不是真正意义上的静态方法,因为类定义本身就是个 ...
- itop4412学习-上层应用多任务开发
1. 首先搭建虚拟机VMWARE12.0+UBUNTU16.04,不过报错了,说是要关闭计算机(非重启)-- 进入BIOS -- 设置BIOS的虚拟化(不打开,默认是工作在32位模式的,virtual ...