Java--Inheritance constructor继承中的构造方法问题(一)
Java规定,一个父类可以同时拥有多个子类,但一个子类只能有一个父类,即单重继承,允许多层继承,即子类还可以有自己的子类,在下一层继承关系中原先的子类就变成了父类,这样的继承关系就形成了继承树。
子类继承父类中所有可能被子类访问的成员变量,原则如下:
1.能够继承那些声明为public和protected的成员变量;
2.能够继承同一包中的那些默认修饰符的成员变量;
3.不能继承那些声明为private的成员变量;
4.如果子类声明一个与父类成员变量同名的成员变量,则不能继承父类的成员变量,此时子类的成员变量称作隐藏了父类的成员变量。
对于成员方法的继承,都类似于上面的4条说法,把成员变量改成成员方法即可,此时子类的方法称为覆盖了父类中的那个方法。
5.不能继承父类的构造方法。
虽然子类不能继承父类的构造方法,但是子类对象会调用父类的构造方法的。
调用构造方法的原则如下:
1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法,.
2. 如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。这句话有点不通,也不懂啥意思,试试就懂了。
3. 如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法,切该语句做为子类构造方法中的第一条语句。
4. 如果某个构造方法调用类中的其他的构造方法,则可以用this(参数),切该语句放在构造方法的第一条.
当一个类继承了某个类时,在子类的构造方法里,super()必须先被调用;如果你没有写,编译器会自动调用super()方法,即调用了父类的构造方法;
这并不是创建了两个对象,其实只有一个子类Sub对象;之所以需要调用父类的构造方法是因为在父类中,可能存在私有属性需要在其构造方法内初始化。
class Super {
String s;
public Super() {
System.out.println("Super");
}
}
class Sub extends Super {
public Sub() {
System.out.println("Sub");
}
}
public class Main {
public static void main(String[] args) {
Sub s = new Sub();
}
}
结果:
Super
Sub
class Usebefore {
String str1;
public Usebefore() {
// TODO Auto-generated constructor stub
System.out.println(".....default super constructor...1...........");
}
public Usebefore(String get1)
{
str1=get1;
System.out.println(str1);
}
public void play()
{
System.out.println("............1............");
}
}
public class Use extends Usebefore{
public Use() {
// TODO Auto-generated constructor stub
System.out.println(".....default super constructor...2...........");
}
public Use(String get2){
super(" diaoyong super constructor youcan constructor");
str1=get2;
System.out.println(str1);
}
public void play()
{
System.out.println("............2............");
}
public static void main(String args[]){
Use use=new Use();
use.play();
use=new Use("get2");
}
}
结果:
.....default super constructor...1...........调用父类无参构造函数
.....default super constructor...2...........调用子类。。
............2............。。。。。。。。。。。。覆盖父类方法
diaoyong super constructor youcan constructor。。。。。。调用父类构造方法
get2
Java--Inheritance constructor继承中的构造方法问题(一)的更多相关文章
- Java--Inheritance constructor继承中的构造方法问题(二)
看了前辈的博客,觉得这两点说的精辟:子类构造方法必须要调用父类的某个构造方法:被子类调用的父类构造方法在父类中必须是存在的. 上篇的例子有一点不明白,子类继承了父类的成员变量,父类的构造函数里引用了该 ...
- java之继承中的构造方法
继承中的构造方法 1.子类的构造过程中必须调用其基类的构造方法. 2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法. 2.1.使用this(argumen ...
- java学习笔记-继承中super关键字
背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...
- Java学习之继承中的执行顺序详解
代码块(理解) (1)用{}括起来的代码. (2)分类: A:局部代码块 用于限定变量的生命周期,及早释放,提高内存利用率. B:构造代码块 把多个构造方法中相同的代码可以放到这里,每个构造方法执行前 ...
- Java 构造器Constructor 继承
Java默认构造方法 构造方法作用:初始化所定义的类的对象和属性. 构造方法没有返回类型. 2 继承中的构造器 子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式). 如果父类 ...
- 【Java基础】继承中的代码块和构造方法的执行顺序探索
本文讲述有关一个类的静态代码块,构造代码块,构造方法的执行流程问题.首先来看一个例子 /** * Created by lili on 15/10/19. */ class Person{ stati ...
- JAVA基础--继承中的构造方法
1. 子类的构造方法必须调用父类的构造方法 2. 子类在自己的构造方法中使用super(argument_list)调用父类的构造方法, 使用this(argument_list)调用自己的其他的构造 ...
- Java学习笔记之Java 继承中的构造方法
参考
- Java 基础:继承中的执行顺序
1.单独的父类测试 Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分, 它们的执行顺序相对来说比较简单,用程序也很容易验证. 比如新建一个 ...
随机推荐
- MySQL-MMM方案
参考文档: 官方文档:http://mysql-mmm.org/mmm2:guide 本文对mmm方案做简单介绍,并做1个简单的验证. 一.MySQL-MMM方案 1. MMM方案简介 MMM(Mul ...
- vim—多行注释、取消多行注释
多行注释 命令模式: (1)将光标放在要注释的行首,按下组合键ctrl + v ,然后按上下键选取要注释的行. (2)按下大i键,然后插入要注释的符号 # (3)按ESC键,退出后,就会全部注释. 取 ...
- Bin Packing 装箱问题——NPH问题的暴力枚举 状压DP
题目: 给定n(1≤n≤24)个物品,重量分别为wi,装进一些容量为S(S<1e8)的背包,最少需要多少个背包?
- git实验
四.实例应用 应用1.现有项目移植到git代管 进入目标项目,进行git初始化: 初始化:git init 修改config:git config -- local user.name '名称' 和 ...
- 20181120-8 Beta阶段第2周/共2周 Scrum立会报告+燃尽图 05
此作业要求参见[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2413] 版本控制地址 [https://git.coding.ne ...
- BETA版本前冲刺准备
[团队概要] 团队项目名:小葵日记 团队名:日不落战队 队员及角色: 队员 角色 备注 安琪 前端工程师 队长 佳莹 前端工程师 智慧 后端工程师 章鹏 后端工程师 语恳 UI设计师 炜坤 前端工程师 ...
- iOS-UICollectionViewController协议及回调
一.UICollectionViewDataSource 1.返回Section数量的方法 - (NSInteger)numberOfSectionsInCollectionView: (UIColl ...
- 【第六周】关于beta测试组员评分标准的若干意见
组名: 新蜂 组长: 武志远 组员: 宫成荣 谢孝淼 杨柳 李峤 项目名称: java俄罗斯方块 评分规则:简单的才是坠吼的,本组不想搞个大新闻,所以奉行极简的评分方式.每一个人交给组长一个排名,假如 ...
- 树形结构的数据库表Schema设计-基于左右值编码
树形结构的数据库表Schema设计 程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门.栏目结构.商品分类等等,通常而言,这些树状结构需要借助于数据库完 成持久化.然而目前的 ...
- 基于opencv的小波变换代码和图像结果
#include "stdafx.h" #include "WaveTransform.h" #include <math.h> #include ...