42)子类继承 有参父类 和无参父类

1)  子类继承有参的父类,那么  必须在子类的  构造函数的初始化列表那里,给父类赋值,比如说

    父类 Student 的构造函数  是   Student(int  age  ,string  name)

    然后我的子类的构造函数 须是:

            Student3(int  age ,string   name,int   sorce):Student(age,name)

            {                          }

 2)总之,不管你是  有参父类构造函数  还是无参构造函数  那么就有了   只要实例化子类,就会调用父类的构造函数

    为啥--> 因为子类的内存区域,有一块属性内存是父类的相关属性,所以啊   你实例化子类,和父类相关的那块内存,

          要用父类的构造函数来初始化,剩下的,靠子类自己的构造函数   

 1 #include<iostream>
 2 using namespace std;
 3 class student
 4 {
 5 public:
11     student()
12     {
15         cout<<"大家好。我是父类的构造函数"<<endl;
16     }
17 private:
18     int a;
20 };

21 class ss:public student
22 {
23 public:29     ss()
30     {
31         cout<<"大家好,我是子类的构造函数"<<endl;
32     }
33
34 };
35 int main()
36 {
37
38     ss cc;
42 }

      最终的运行结果:

    

  然后  有参的  父类:
  

 1 #include<iostream>
 2
 3 using namespace std;
 4
 5 class student
 6 {
 7 public:
 8     student(int a,int b)
 9     {
10         cout<<"大家好。我是父类的构造函数"<<endl;
11     }
12 private:
13     int a;
14 };
15
16
17 class ss:public student
18 {
19 public:
20     ss(int a,int b):student(a,b)
21     {
22         cout<<"大家好,我是子类的构造函数"<<endl;
23     }
24
25 };
26 int main()
27 {
28
29     ss cc(2,3);
30 }

3)派生类(子类)      基类(父类)

   

    

 

4)就是  你的子类 在写构造时

    student3()   这样的子类构造  会默认调用父类的无参构造     (只要实例化子类,肯定会调用父类的构造函数,所以 要是有参构造,必须在子类的构造函数初始化列表给初始化)

但是  你可以写一个 无参的父类构造,  来 重载那个有参的,这样  就不用在你的子类构造函数初始化列表那里 给初始化  父类了

5)

原文地址:https://www.cnblogs.com/xiaoyoucai/p/8277079.html

时间: 2024-10-16 23:46:43

42)子类继承 有参父类 和无参父类的相关文章

JavaSE8基础 子类中所有的构造方法默认访问父类中无参构造方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: /*默认的:子类中所有的构造方法默认都会访问父类中无参构造方法*/ //父类 class Father { //无参构造函数 public Father() { System.out.println("父类无参构造函数"); } //有参构造函数 public Father(int num) { S

子类构造函数是否会默认调用父类的无参构造函数

1 package test; 2 3 public class TestB { 4 5 public TestB() { 6 System.out.println("TestB的无参构造函数..."); 7 } 8 9 } 1 package test; 2 3 public class TestA extends TestB { 4 5 public TestA(int i) { 6 System.out.println(i); 7 } 8 9 public static void

MyEclipse快速生成setter、getter、toString()、有参构造函数、无参构造函数

简单来说举一反三!!! 首先将鼠标移动到属性,点击右键如下图所示: 找到Source然后点击generate getters and setters.(同理toString().有参构造函数.无参构造函数点击Source中对应的选项即可) 选择select all.然后eclipse就自动生成效果图如下:(同理toString().有参构造函数.无参构造函数) 认真看过此篇的小伙伴,如果对你有收获,请点击旁边的小手推荐一下,如果有误,欢迎指正,谢谢! 版权声明:此篇为本人原创,转载请标明出处:h

子类构造函数会默认调用父类无参构造函数

1.调用父类无参构造函数是默认的! 子类的构造方法默认都去访问了父类的无参构造方法:在子类中的构造方法后都有一行默认语句 base() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Fu {   public Fu()     {         Console.WriteLine("fu");     } } class Zi : Fu {     public Zi()         : base()//不管是否显式调用,控制台都会输出fu

在子类中,一定要访问父类的有参方法?

abstract class Person{ private int age; private String name; public Person(int age,String name){ this.age=age; this.name=name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name

java中子类继承父类程序执行顺序问题

Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说比较简单,用程序也很容易验证.比如新建一个测试父类. public class FatherTest { private String name; FatherTest(){ System.out.println("--父类的无参构造函数--"); } FatherTest(String name){ this.name=name; System.out

子类继承父类

要点一:类被创建时,会自动生成一个隐式构造方法,该方法无返回值无标识符void. public Person(){}; 要点二:如果子类继承Person{},那么会自动寻找父类的无参构造方法并继承. public class Stu extends Person{} 要点三:如果父类存在多个构造方法,子类只继承无参构造方法.如果父类没定义无参构造方法,但定义了有参构造方法,则系统不会为父类生成隐式无参构造方法,这样子类就无法找到,会报错. 没有为缺省构造函数定义隐式超构造函数 Person().

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

1 /* 2 如果父类没有无参构造方法,那么子类的构造方法会出现什么现象呢? 3 报错. 4 如何解决呢? 5 A:在父类中加一个无参构造方法 6 B:通过使用super关键字去显示的调用父类的带参构造方法 7 C:子类通过this去调用本类的其他构造方法 8 子类中一定要有一个去访问了父类的构造方法,否则父类数据就没有初始化. 9 10 注意事项: 11 this(...)或者super(...)必须出现在第一条语句上. 12 如果不是放在第一条语句上,就可能对父类的数据进行了多次初始化,所以

Java中子类继承父类关于构造方法的问题:there is no default constructor available in

there is no default constructor available in 原因 这个错误是由于继承引起的,原因是子类里写了并且使用了无参的构造方法(不写默认就是无参的构造方法),但是它的父类中却至少有一个是没有“无参构造方法”的,就会出现这个问题 总结 一个类如果显式的定义了带参构造函数,那么默认无参构造函数自动失效 一个类只要有父类,那么在它实例化的时候,一定是从顶级的父类开始创建.对于Java来说要一直追述到Object 祖宗(Object)-> 曾爷爷 -> 爷爷 -&g