java protected 构造方法_java中子类调用父类构造方法注意事项
protected继承
继承有个特点,就是子类无法访问父类的private字段或者private方法。例如,Student类就无法访问Person类的name和age字段:
class Person {
private String name;
private int age;
}
class Student extends Person {
public String hello() {
return"Hello, " + name; // 编译错误:无法访问name字段
}
}
这使得继承的作用被削弱了。为了让子类可以访问父类的字段,我们需要把private改为protected。用protected修饰的字段可以被子类访问:
class Person {
protected String name;
protected int age;
}
class Student extends Person {
public String hello() {
return"Hello, " + name; // OK!
}
}
因此,protected关键字可以把字段和方法的访问权限控制在继承树内部,一个protected字段和方法可以被其子类,以及子类的子类所访问,后面我们还会详细讲解。
2.super的使用
super关键字表示父类(超类)。子类引用父类的字段时,可以用super.fieldName。例如:
class Student extends Person {
public String hello() {
return"Hello, " + super.name;
}
}
上面的代码执行会有编译错误,student构造方法,无法调用Person的构造方法。
解析:任何class的构造方法,必须先构造发父类的构造方法。如果没有明确的调用父类的构造方法,编译器会自动帮我们加一句super(),所以Student类的构造方法实际上是这样
那么问题就出在父类即Person类没有默认的构造方法,子类即Student必须显示调用重载以后的构造函数,即
Student类中的写法为
总结:如果父类没有默认的构造方法,子类必须显示地调用super()并给出参数,让编译器定位到一个合适的构造方法。同时,子类不会继承任何父类的构造方法,子类默认的构造方法是编译器自动生成的,不是继承的
java protected 构造方法_java中子类调用父类构造方法注意事项相关推荐
- insert时调用本身字段_java中子类调用父类构造方法注意事项
protected继承 继承有个特点,就是子类无法访问父类的private字段或者private方法.例如,Student类就无法访问Person类的name和age字段: class Person ...
- c++中子类调用父类方法的方法
在c++中子类调用父类方法的方法和java所用的方式不一样, java使用super指针就可以调用,c++中虽然也有this指针,但是不能用super去调用父类方法. c++用的方法为:fatherC ...
- JAVA子类调用父类构造方法
子类调用父类的构造方法 父类的构造方法不能被子类继承.以下语句中MyException类继承了java.lang.Exception类. public class MyException extend ...
- python中子类调用父类的初始化方法
http://bestchenwu.iteye.com/blog/1044848 http://www.crazyant.net/1303.html 一直不太理解python的初始化方法,今天找了下资 ...
- JavaScript中子类调用父类方法的实现
一.前言 最近在项目中,前端框架使用JavaScript面向对象编程,遇到了诸多问题,其中最典型的问题就是子类调用父类(super class)同名方法,也就是如C#中子类中调用父类函数base.** ...
- C#中子类调用父类的实现方法
本文实例讲述了C#中实现子类调用父类的方法,分享给大家供大家参考之用.具体方法如下: public class Person {public Person(){Console.WriteLine(&q ...
- python子类如何调用父类方法_python中子类调用父类函数的方法示例
前言 本文主要给大家介绍了关于python子类调用父类函数的相关内容,Python中子类中的__init__()函数会覆盖父类的函数,一些情况往往需要在子类里调用父类函数.下面话不多说了,来一起看看详 ...
- java继承父类执行顺序_java中子类继承父类程序执行顺序问题
Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说比较简单,用程序也很容易验证.比如新建一个测试父类. public ...
- Java里子类调用父类构造方法问题
在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的? 答案如下: 当你new一个子类对象的时候,必须首先要new一个父类的 ...
- java不能覆盖父类的_java中子类覆盖父类方法所必须满足的条件
一.描述 子类重写(覆盖)父类的方法必须满足的条件: 1.父类中的方法在子类中必须可见,即子类继承了父类中的该方法(可以显式的使用super关键字来访问父类中的被重写的方法), 如果父类中的方法为pr ...
最新文章
- python批量pdf转word,python批量实现Word文件转换为PDF文件
- 内存泄漏检测工具VLD在VS2010中的使用举例
- 电机高频注入原理_永磁同步电机新型转子位置估计误差补偿策略
- Codeforces 32E Hide-and-Seek 乞讨2关于镜面反射点 计算几何
- Nature撤稿!为销毁造假证据丢弃电脑,“划时代”成果翻车了,副校长鞠躬道歉...
- 叮当快药产品体验报告
- Linux Server 安装 raid 1
- php面试 算法,PHP面试之常用算法 - 简庆旺个人博客|PHP教程|PHP学习|Python学习|Python教程|Seo学习|Seo教程...
- [2019杭电多校第三场][hdu6609]Find the answer(线段树)
- 2021包膜机十大品牌排行榜
- fprintf函数matlab,fprintf函数的运用(组图)
- Flutter学习笔记
- Lattice FPGA 使用指南4 - 全局复位网络GSR的使用
- 个人简介之物理层安全
- Qt 5.7设置调试器
- html书签导入苹果,如何把360浏览器的收藏书签导入safari浏览器里
- JAVA团队开发手册 - 1.环境搭建
- 使用Canvas实现网页鼠标签名效果
- torch.roll图片实验
- linux dns 自动识别,Linux 自动化部署DNS服务器