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() ...
随机推荐
- 关于JQuery的异步注册
在采用JQuery进行表单异步提交时,前台传入的是json数据格式,后台controller用map接收,再传回前台进行结果判断时,if-else接收结果()里面,尽量不要出现“=”,不然判断语句失效 ...
- echo、print、print_r、var_dump
echo(): 可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用. print(): 函数pri ...
- R语言(自定义函数、循环语句、管道函数)
学习R语言半年多了,以前比较注重统计方法上的学习,但是最近感觉一些基础知识也很重要.去年的参考资料是<R语言实战>,今年主要是看视频.推荐网易云课堂里的教程,很多资料都是很良心的~ 目前学 ...
- flex Datagrid checkbox
<?xml version="1.0" encoding="utf-8"?><!-- http://blog.flexexamples.com ...
- 【CS】知识索引汇总
Chapter 7 hello.o -> hello (链接) 一.静态链接 主要是将符号对应起来 两个主要任务:符号解析(符号引用与符号定义的对应).重定位(符号定义与内存位置的对应) 1. ...
- 微信小程序点击事件
<---------------------------------------------------index文件夹:------------------------------------ ...
- gitlab在push代码的时候报错
一.问题报错 gitlab在执行git pull origin master,拉取代码的时候报如下错误. $ git pull origin master remote: Counting objec ...
- 17、JAVA多线程和并发基础面试问答
JAVA多线程和并发基础面试问答 原文链接:http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-ans ...
- python 内置模块(hash lib)
用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 MD5 import hashlib hash=h ...
- loj2538 「PKUWC 2018」Slay the Spire
pkusc 快到了--做点题涨涨 rp. ref我好菜啊QAQ. 可以发现期望只是一个幌子.我们的目的是:对于所有随机的选择方法(一共 \(\binom{2n}{m}\)种),这些选择方法都最优地打出 ...