Android(java)学习笔记119:继承中父类没有无参构造

 1 /*
 2     如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢?
 3         报错。
 4     如何解决呢?
 5         A:在父类中加一个无参构造方法
 6         B:通过使用super关键字去显示的调用父类的带参构造方法
 7         C:子类通过this去调用本类的其他构造方法
 8             子类中一定要有一个去访问了父类的构造方法,否则父类数据就没有初始化。
 9
10     注意事项:
11         this(...)或者super(...)必须出现在第一条语句上。
12         如果不是放在第一条语句上,就可能对父类的数据进行了多次初始化,所以必须放在第一条语句上。
13 */
14 class Father {
15     /*
16     public Father() {
17         System.out.println("Father的无参构造方法");
18     }
19     */
20     //如果没有写构造方法,默认有无参构造,这里写了带参构造,无参构造变成了带参构造
21     public Father(String name) {
22         System.out.println("Father的带参构造方法");
23     }
24 }
25
26 class Son extends Father {
27     public Son() {
28         super("随便给");
29         System.out.println("Son的无参构造方法");
30         //super("随便给");
31     }
32
33     public Son(String name) {
34         //super("随便给");
35         this();
36         System.out.println("Son的带参构造方法");
37     }
38 }
39
40 class ExtendsDemo7 {
41     public static void main(String[] args) {
42         Son s = new Son();
43         System.out.println("----------------");
44         Son ss = new Son("林青霞");
45     }
46 }

 这里子类son创建对象的时候,无论它使用无参构造和带参构造,即无论使用new Son(),new Son("林青霞"),这里这些构造方法中默认第一条语句是必须隐式默认是super(),也就是父类的无参构造方法,利用父类的无参构造函数去初始化父类携带的数据,从而提供给子类Son使用。通常父类如果不写构造的话,系统默认父类为无参构造,但是如果父类写了带参构造,那么无参构造就会覆盖掉,这样父类Father()也就没有无参构造了,这样的话前面Son()创建对象时候就会出错。但是也可以显式利用super("name"),调用父类带参构造初始化

时间: 2024-08-10 00:03:30

Android(java)学习笔记119:继承中父类没有无参构造的相关文章

Java学习笔记之继承

一.继承的基础 在Java术语中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass). 举例说明: 1 class Box 2 { 3 public double width; 4 public double height; 5 public double depth; 6 7 //重载构造方法 8 public Box(Box ob) 9 { 10 width = ob.width; 11 height = ob.height; 12 depth = ob.dep

Java学习笔记3——继承

继承 继承的好处:子类拥有父类的所有属性和方法,peivate修饰的无效:实现代码复用 class 子类 extends 父类 例如: class Dog extends Animal{              ...... } 父类: package com.imooc; public class Animal {  public int age;  public String name;  public void eat(){   System.out.println("动物具有吃东西&q

java学习笔记(六)继承

继承是面向对象编程中最重要的特征之一,它允许通过继承一个已经存在的类,来编写一个新类.已有的类称为父类,也可以称为基类,超类,新类称为子类也称为派生类. 继承使用关键字extends,用在类名之后,例:public void class salary extends Employee(){ } 子类salary 继承父类Employee java中的类只能继承一个类. 子类能继承父类中用public protected 修饰的成员. 继承的单根性(单继承):一个java类只能有一个父类. 继承的

Java学习笔记-4.继承与多态

一.继承机制 1.继承:允许一个类作为另一个类的扩充版本 2.单继承:一个类只继承了一个父类    多继承:一个类继承了多个父类 Java只支持单继承,C++支持多继承 二.类的继承 1.形式: class SubClass extends BaseClass { //子类类体,定义子类的新成员 } Java中所有的类都直接或间接地继承类 java.lang.Object 2.构造方法 (1)显式构造方法    形式:super(参数表); 系统执行到这条语句时,会根据参数表判断调用父类中哪个构

黑马程序员——JAVA学习笔记四(继承、接口、内部类)

1,    通过extends关键字让类与类之间产生继承关系.多个类中存在相同属性和行为时,将这些内容抽取到单独的一个类中,那么多个类无需定义这些属性和行为,只要继承那个类即可,已存在的类叫做超类,基类,或父类.新类称为子类,派生类,孩子类. 子类可以直接访问父类中的非私有的属性和行为.子类无法继承父类中私有的内容.JAVA不支持多继承,只支持单继承,多实现. 继承提高了代码复用性,让类与类之间产生了关系.为多态提供了前提. 2,    super关键字代表父类中成员变量内存空间的标示.两个作用

疯狂Java学习笔记(83)----------继承详解

有一段时间没有更新博客了,感觉挺愧疚的,这两天忙着考试,实在没有办法,只能放一放了,还好自己复习的还不错,闲的没事,跟两篇博文,来能弥补一下空虚! 言归正传! 什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接访问父类中的非私有的属性和行为. 通过 extends 关键字让类与类之间产生继承关系. class SubDemo extends Dem

java学习笔记(Core Java)5 继承

第五章 继承 1. 类 超类 子类继承:extends (所有继承嗾使公有继承,没有私有继承和保护继承) c+++: 用: 2.使用super(c#使用Base)调用基类的方法 子类构造器会默认调用基类的无参构造来初始化基类的私有域 如果基类没有无参构造,则会报错 3.this :1.引用隐式传参 2.调用类其他构造器 super:1.调用超类的方法 2.调用超类的构造器 c++使用初始化列表来调用基类的构造函数 4.java中,不需要将方法声明为虚拟方法方法,基类指针指向不同对象时,虚拟指针知

【JAVA学习笔记】面向对象

编程语言的发展 面向过程的设计思想 面向对象的设计思想 对象和类的概念 类之间的关系 对象和引用 Java类的定义 构造函数 对象的创建和使用 this关键字 static关键字 package和import语句 访问控制 类的继承 方法的重写 final关键字 object类 对象转型 多态 抽象类 接口 编程语言的发展 机器语言 汇编语言 高级语言–面向过程的语言 面向对象的语言 面向过程的思想和面向对象的设计思想 面向对象思维: 合适的方法出现在合适类中 在问题域中,不再考虑一步一步的过程

java/android 设计模式学习笔记(7)---装饰者模式

这篇将会介绍装饰者模式(Decorator Pattern),装饰者模式也称为包装模式(Wrapper Pattern),结构型模式之一,其使用一种对客户端透明的方式来动态的扩展对象的功能,同时它也是继承关系的一种替代方案之一,但比继承更加灵活.在现实生活中也可以看到很多装饰者模式的例子,或者可以大胆的说装饰者模式无处不在,就拿一件东西来说,可以给它披上无数层不一样的外壳,但是这件东西还是这件东西,外壳不过是用来扩展这个东西的功能而已,这就是装饰者模式,装饰者的这个角色也许各不相同但是被装饰的对