” Error:Implicit super constructor Pet() is undefined. Must explicitly invoke another constructor  “

 记住一点:在构造子类时,一定会调用到父类的构造方法。因为父类中的元素也需要被初始化。 
所以父类要么有一个默认的无参数构造,这样Java会自动调用这个无参数的构造。如果父类没有无参数的构造,那么就要你自己在子类的构造中,通过super()的方式调用父类的构造。 

参考代码如下;

  1. package practise02_2;
  2. /*
  3. * 子类重写父类方法
  4. */
  5. public class Pet {
  6. private String petName;
  7. private String ownerName;
  8. Pet(){}
  9. public Pet(String petName,String ownerName){
  10. System.out.println("wweqwq");
  11. this.petName=petName;
  12. this.ownerName=ownerName;
  13. }
  14. public void playWithOwner(){
  15. System.out.println(getPetName()+"正在和主人"+getOwnerName()+"玩耍");
  16. }
  17. public String getPetName() {
  18. return petName;
  19. }
  20. public void setPetName(String petName) {
  21. this.petName = petName;
  22. }
  23. public String getOwnerName() {
  24. return ownerName;
  25. }
  26. public void setOwnerName(String ownerName) {
  27. this.ownerName = ownerName;
  28. }
  29. }
  1. *********子类在实例化时,必须给父类变量初始化,即调用父类构造函数**********************
  2. package practise02_2;
  3. public class Cat extends Pet {
  4. private String petName;
  5. private String ownerName;
  6. public Cat(String petName, String ownerName) {
  7. // super(petName, ownerName); //注释掉会报错!为何??实例化子类时,父类中的属性也需要初始化!!在父类添加无参数的构造方法后错误解决
  8. this.petName=petName;
  9. this.ownerName=ownerName;
  10. }
  11. public void playWithOwner(){
  12. System.out.println(getPetName()+"正在和主人"+getOwnerName()+"玩耍");
  13. }
  14. }
  1. **********  ”  父类的私有属性可以被继承???”  ********
  2. package practise02_2;
  3. public class Dog extends Pet{
  4. //值得注意的是:这里虽然没有定义子类属性,但是并不代表子类继承了父类的私有属性
  5. //子类只是调用了父类的构造方法,实例化子类时,值传给子类构造方法的形参
  6. //如下可验证:子类构造方法的形参和父类不同,两者之间没任何关系
  7. public Dog(String a , String b ) {//形参而已,并无实际意义
  8. super(a, b);
  9. // TODO Auto-generated constructor stub
  10. }
  11. public void playWithOwner(){
  12. System.out.println(getPetName()+"正在和主人"+getOwnerName()+"玩耍");
  13. }
  14. }
  1. **************主函数***************
  2. package practise02_2;
  3. public class Test {
  4. public static void main(String[] args) {
  5. Cat cat=new Cat("阿花","Tom" );
  6. Dog dog=new Dog("旺财","Tom");
  7. cat.playWithOwner();
  8. dog.playWithOwner();
  9. }
  10. }
  11. **************运行结果***********

java constructor 在构造子类时,一定会调用到父类的构造方法 “ 私有属性被继承了?”问题的更多相关文章

  1. java中的反射,知道类名创建类,还可以设置私有属性的值

    刚刚学到了反射,感觉反射的功能好强大,所以想写篇博客记录下自己的学习成果. 利用反射来创建对象. Class c1=Class.forName("test.Person");//通 ...

  2. 关于JAVA中子类和父类的构造方法

    本篇文章总结了一些关于Java构造方法的常见问题. 为什么创建了一个子类对象会调用其父类的构造方法 如下代码示例: package simplejava; class Super { String s ...

  3. Java中子类能继承父类的私有属性吗?

    前段时间去听老师讲课的时候,老师告诉我子类是可以继承父类所有的属性和方法的.当时我是极其疑惑的,因为之前学校考试时这个考点我记得很清楚:子类只能继承父类的非私有属性和方法.老师给我的解释是这样的--先 ...

  4. Java中对象构造

    构造函数 作用:在构造对象的同时初始化对象.java强制要求对象 诞生同时被初始化,保证数据安全. 调用过程和机制:①申请内存,②执行构造函数的函数体,③返回对象的引用. 特点:与类同名,无返回类型, ...

  5. java中构造代码块、方法调用顺序问题

    1. 继承的概念 继承在本职上是特殊——一般的关系,即常说的is-a关系.子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法. 2. 继承中的初始化顺序 从类的结构上而言,其 ...

  6. Java之对象构造过程

    先来运行一段代码 class A { public A() { init(); } public void init() { } public static void main(String[] ar ...

  7. JAVA笔记5__构造块、静态块/单例设计模式/继承/final关键字/super关键字

    public class Main { { //构造块(在构造对象时调用,先于构造方法执行) System.out.println("我是构造块!"); } static{ //静 ...

  8. Copy Constructor的构造操作

    Copy Constructor的构造操作 有三种情况,会以一个object的内容作为另一个class object的初值: 1.  对一个object做显式的初始化操作 class X{…}; X ...

  9. Default Constructor的构造操作

    Default Constructor的构造操作 C++ Annotated Reference Manual书中的Section 12.1说过:default constructor 只有在编译器需 ...

随机推荐

  1. ASP.NET MVC Filter的思考

    思考了一下AOP的具体实现,后来想到ASP.NET MVC过滤器其实就是AOP的一种,于是从Filter下手研究AOP. 暂时先考虑AuthorizationFilter,ActionFilter,R ...

  2. 深入理解Java常用类-----时间日期

    除了String这个类在日常的项目中比较常用之外,有关时间和日期的操作也是经常遇到的,本篇就讲详细介绍下Java API中对时间和日期的支持.其实在Java 8之前时间日期的API并不是很好用,以至于 ...

  3. ECS_8080端口连接拒绝问题排查

    原文链接 用户ECS网络设置 上图是用户ECS的网络示意图: ecs处于vpc网络下 ecs加入了一个安全组,该安全组出入方向均开放8080端口 ecs有两个网卡,一个私网主网卡(有虚线的网卡),一个 ...

  4. php处理表单中的复选框问题以及js实现全选

    做的一个项目中遇到了全选和取消全选的问题,这是一个很普遍的功能,,虽然我们经常用到,但是真正做起来却发现行不通,在网上找了些,大部分都是ie,但是谷歌内核浏览器不能正常实现,所以经过小小的调整,今天就 ...

  5. JVM-7.Java内存模型与高效并发

    更多内容参见<并发与同步>系列 一.引子 二.JMM 三.Java中的线程 四.线程安全 五.锁优化       一.引子 运算能力 摩尔定律:晶体管数量,代表的CPU的频率 Amdahl ...

  6. 一位菜鸟的java 最基础笔记

    java的特性 简单性(Simple). 结构体系中立(Architecture Neutral). 面向对象(Object Oriented). 易于移植(Portable). 分布式(Distri ...

  7. Chrome 开发者工具断点调试(视频教程)

    很多人不了解 Chrome Dev Tools (开发者工具)的使用方法和技巧. 其中很多技能,无论是前端开发从业者,还是普通用户,了解一些还是对日常很有帮助的. 本猿定期录制.甚至根据您的需求来订制 ...

  8. re 学习随便

    . 任意一个字符 \转义字符 *  字符重复0--多次 + 字符重复1-多次 ? 字符重复0-1次 ^行首匹配 或者在一个字符集中表示取反 \$  匹配字符串末尾 \b 匹配\w 与\w 之间的 \B ...

  9. 机器学习:线性判别式分析(LDA)

    1.概述      线性判别式分析(Linear Discriminant Analysis),简称为LDA.也称为Fisher线性判别(Fisher Linear Discriminant,FLD) ...

  10. windows利用iis配置反向代理实现ECS内网互通oss

    IIS实现反向代理 新建两个站点,端口分别使用 80 和 81,在DNS中新建A记录,指向该计算机(10.4.34.41) 配置过程如下: 1.在Windows Server 2012 R2上 安装A ...