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() ...
随机推荐
- HTML5 添加视频和音频(响应式视频)
最初的 HTML5规范呼吁所有浏览器内置支持使用 Ogg格式① 直接播放视频或音频(无需插件).但是由于 HTML5工作组的内部争议,曾经作为基线标准的支持 Ogg(包括 Theoravideo 和 ...
- python教程(三)·自定义函数
前面介绍了如何使用函数,这一节我们就来学习怎么创建自己的函数! 自定义函数 创建函数非常简单,它使用关键字 "def",下面的代码创建了一个带有一个参数的函数,并使用不同的参数调用 ...
- 坚果云WebDav示例
坚果云WebDav示例 最近看到坚果云有一个WebDAV应用,一时不解这是什么功能,了解后做了一个示例: WebDAV是一种基于HTTP1.1协议的通信协议.它扩展了HTTP1.1,在GET.POST ...
- D3.js和three.js
D3.js是一个数据可视化的库,看看他们的DEMO就可以知道,技术基础是SVG.兼容性是IE9+. three.js是以webgl为基础的库,封装了一些3D渲染需求中重要的工具方法与渲染循环.
- Oracle入门第四天(下)——约束
一.概述 1.分类 表级约束主要分为以下几种: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK 2.注意事项 如果不指定约束名 ,Oracle server ...
- hasOwnProperty()函数
hasOwnProperty()函数的返回值为Boolean类型.如果对象object具有名称为propertyName的属性,则返回true,否则返回false 例子: function Site( ...
- 回顾RAC安装过程中对ASM的处理
1 首先建立好节点间共享的磁盘,要注意从各节点看到的磁盘的序号.名称一致. 2 通过某一个节点,对共享磁盘进行格式化. 3 在Grid Infrastructure 中, 有一个为OCR选择存储介质的 ...
- Luogu1445 [Violet]樱花
题面 题解 $$ \frac 1x + \frac 1y = \frac 1{n!} \\ \frac{x+y}{xy}=\frac 1{n!} \\ xy=n!(x+y) \\ xy-n!(x+y) ...
- AngularJS中Directive指令系列 - 基本用法
参考: https://docs.angularjs.org/api/ng/service/$compile http://www.zouyesheng.com/angular.html Direct ...
- 搜索引擎ElasticSearch系列(二): ElasticSearch2.4.4 Head插件安装
一:ElasticSearch Head插件简介 elasticsearch-head is a web front end for browsing and interacting with an ...