java学习中一些疑惑解答(2)
(一)继承条件下构造方法的调用
以下面的源代码为例:
package ktdemo;
class Grandparent {
public Grandparent() {
System.out.println("GrandParent Created.");
}
public Grandparent(String string,String str) {
System.out.println("GrandParent Created.String:" + string + " "+ str);
}
}
class Parent extends Grandparent {
public Parent() {
super("已经调用","该方法");
System.out.println("Parent Created");
// super("Hello.Grandparent.");
}
}
class Child extends Parent { public Child() {
System.out.println("Child Created");
}
}
public class TestInherits {
public static void main(String args[]) {
Child c = new Child();
}
}
修改Parent构造方法的代码,在前面加一句调用super方法的语句,可以显示调用GrandParent的另一个有参的构造方法。
没加上super语句前运行截图:
加上super语句前运行截图:
从截图看说明通过可以super调用父类的有参和无参的构造方法
#而且必须是子类构造方法的第一个语句,因为构造方法的调用是先调用父类的构造方法,再调用子类的构造方法。
(二)为什么子类的构造方法在运行之前,必须调用父类的构造方法?能不能反过来,为什么不能反过来?
(1) 构造函数是一种特殊的函数,主要用来创建对象时初始化对象,即为对象成员变量赋初值,它与new 运算符一起使用在创建对象的语句中;构造函数的主要功能用于在类的·创建时定义初始化状态
(2) 构造一个对象时,必须先调用其的构造函数,来初始化其成员变量和成员方法
(3) 子类拥有父类的成员变量和成员方法,子类继承了父类的各种属性,而构造方法则相当于把类给实例化出来,如果子类不调用父类的构造函数,则从父类继承而来的各种属性无法得到正确的初始化,不能反过来调用是因为父类根本不知道子类中有什么变量和方法,而且这样子类也得不到初始化的父类属性,程序会出错。
(三)方法覆盖要求子类与父类的方法一模一样,否则是方法重载,在子类中,若要调用父类中被覆盖的方法,可以使用super关键字,示例代码:
package demo;
class parent
{
public void show()
{
System.out.println("这是父类中的show方法");
}
}
class child extends parent
{
public void show()
{
super.show();
System.out.println("这是子类中的show方法");
}
}
public class test {
public static void main(String [] args)
{
child c = new child();
c.show();
}
运行截图:
结果分析:super方法在子类覆盖方法类使用,只有这样才能调用父类中被覆盖的方法,并且super语句放在子类覆盖方法第几句都行
java学习中一些疑惑解答(2)的更多相关文章
- Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)
Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...
- Java 需要记得、了解的关键词 (Java 学习中的小记录)
Java 需要记得.了解的关键词 (Java 学习中的小记录) 作者:王可利(Star·星星) 总结:本次随笔,仅且拿来平时翻阅记忆用
- Java学习中,常用的命令管理(Java 学习中的小记录)
Java学习中,常用的命令管理 作者:王可利(Star·星星) 一.Window中常见的dos命令 在哪里操作dos命令: Win7 ---> 开始 ---->所有程序---& ...
- java学习中碰到的疑惑和解答(一)
今天写一个接口的时候发现,接口的方法不需要写修饰符,直接写数据类型加上方法名(参数)即可通过编译. import java.util.List; import com.bjm.pojo.Flower; ...
- JAVA学习中好网站 - -
http://www.54bk.com 我是博客 http://www.java-cn.com java中文网 http://java.sun.com sun官方网站 http://www.comej ...
- java学习中的一些疑惑解答
一.java中的枚举类型: 在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的.例如星期一到星期日七个数据元素 ...
- java学习中碰到的疑惑和解答(二)
路径问题是一个在平时学习和开发碰到的常见问题,对于初学者是一个比较值得研究的东西.因此对路径问题进行总结. 1. 编写路径为了告诉编译器如何找到其他资源. 2. 路径分类: 相对路径:从当前资源出 ...
- JAVA学习中Swing概述中的JFrame学习
package com.swing; import java.awt.Color;import java.awt.Container;import java.awt.event.WindowAdapt ...
- JAVA学习中Swing部分JDialog对话框窗体的简单学习
package com.swing; import java.awt.Color;import java.awt.Container;import java.awt.event.ActionEvent ...
随机推荐
- javascript中的对象
除了字符串,数字,布尔值(true,false),null,undefined,js中的值都是对象. 操作一个对象 var o = {name: 'man', value: 99} o.name = ...
- Java笔记:有啥记啥
构造方法可以初始化,也可以在调用的时候传参 1android需要java什么水平 2java封装
- js中属性节点的应用
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- CSS样式表基础
CSS的样式表其实就是美观页面的,加一些样式. 一.样式表的三种分类: ①内联样式:写在某一个标签里面的样式. 优点:控制精确. 缺点:代码重用性差.(太多了不好写)页面代码乱.(太乱,后期不方便看) ...
- Java守护线程
最近的项目使用的是dubbo.Web工程发布在Tomcat上,会作为消费者调用其他的dubbo微服务.但是最近发现一个问题,在使用shutdown命令关闭tomcat的时候,Tomcat并没有真正关闭 ...
- Java实现画八卦
八卦是由多个圆叠加而成,如果我们让每个圆都有自己的颜色,那么具体结构便一目了然,如下图所示: 显然只要令对应的圆颜色相同,就能达到我们预期的效果. 用Java就能轻松画出来: import java. ...
- Oracle入门基础
使用SQLplus工具登录连接 开始->运行CMD-> C:\Users\Admininstrator> sqlplus 请输入用户名:sys@orcl as sysdba 输入口令 ...
- node(Buffer缓存区)
// 创建buffer类 var buf=new buffer(10); var buf=new buffer([10,20,30,40]); var buf=new buffer("www ...
- 用ILSpy查看Session.SessionID的生成算法
缘由 asp.net Session在InProc模式下,容易丢失,经常需要重新登录,且不支持分布式共享. 所以在研究Redis实现原生的Session,本来想用GUID作为key存入cookie,又 ...
- vaadin学习,重要的网址
比较重要的几个:UI组件及示例程序:http://demo.vaadin.com/samplerBook of Vaadin:https://vaadin.com/bookAPI:https://va ...