11.子类实例化过程

  • 生成子类的过程
  • 子类继承了父类的成员变量,但却无法继承父类的构造函数
    • 当生成子类对象的时候,一定会调用父类的构造函数
    • 如果子类当中没有调用构造函数,编译器会自动添加super(),用于调用父类当中的无参数构造函数
  • 使用super调用父类构造函数的方法
    • 在子类要调用父类函数的话,super()一定要是构造函数的第一条语句
  1. classPerson{
  2. String name;
  3. int age;
  4. int grade;
  5. Person(){
  6. System.out.println("Person的无参数构造函数");
  7. }
  8. Person(String name ,int age){
  9. this.name = name;
  10. this.age = age;
  11. System.out.println("Person的有参数构造函数");
  12. }
  13. void eat(){
  14. System.out.println("吃饭");
  15. }
  16. }
  1. classStudent extends Person{
  2. //在子类的构造函数当中,必须调用父类的构造函数
  3. Student(){
  4. super();
  5. System.out.println("student的无参数构造函数");
  6. }
  7. Student(String name,int age,int grade){
  8. //this.name = name;
  9. //this.age = age;
  10. super(name,age);
  11. this.grade = grade;
  12. }
  13. }
  1. classTest{
  2. publicstaticvoid main(String args []){
  3. Student student =newStudent("zhagnsan",18,3);
  4. System.out.println(student.name);
  5. System.out.println(student.age);
  6. System.out.println(student.grade);
  7. }
  8. }

结果:

D:\work\src>javac *.java

D:\work\src>java Test

Person的有参数构造函数

zhagnsan

18

3

来自为知笔记(Wiz)

时间: 2024-10-13 15:34:58

11.子类实例化过程的相关文章

java4android (继承中的子类实例化过程)

生成子类的过程 见代码: class Person { String name; int age; Person(){ System.out.print("Person的无参数构造函数"); } Person(String name,int age){ this.name = name; this.age = age; System.out.print("Person的有2个参数的构造函数"); } void eat(){ System.out.print(&quo

面向对象(子父类中构造函数的特点-子类实例化过程)

/* 3,子父类中的构造函数. 在对子类对象进行初始化时,父类的构造函数也会运行, 那是因为子类的构造函数默认第一行有一条隐式的语句 super(); super():会访问父类中空参数的构造函数.而且子类中所有的构造函数默认第一行都是super(); 为什么子类一定要访问父类中的构造函数. 因为父类中的数据子类可以直接获取.所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的.//指在在父类构造函数初始化 所以子类在对象初始化时,要先访问一下父类中的构造函数. 如果要访问父类中指定

子类实例化过程

先看代码 class Person{ int age; String name; Person(){ System.out.println("Person的无参数构造函数"); } Person(int age,String name){ this.age = age; this.name = name; System.out.println("Person的有参数构造函数"); } void eat(){ System.out.println("吃饭&q

【好程序员训练营】----子类实例化函数复写对象转型

android培训------我的java笔记,期待与您交流! 一.子类实例化过程 public class Student extends Person{ /* * 继承父类成员和函数,不能继承构造函数 * 在子类构造函数中,须调用父类的构造函数 */ Student(){ super();//用于调用父类构造函数:若写则在第一条语句,若不写,编译器自动添加:可以调用父类有参构造函数super(..,..); System.out.println("student无参数构造函数");

子类的实例化过程

1.生成子类的过程 定义两个类: 1.Person类 2.student类继承Person 子类不能继承父类的构造函数 定义一个主函数 在子类的构造函数当中,必须调用父类的构造函数 如果子类的构造函数里没有显示的调用父类的构造函数,编译器会自动加上super(); 为什么子类必须要调用父类的构造函数? 由于子类继承了父类当中的成员变量,但是子类不能继承父类的构造函数,所以在子类构造函数给成员变量赋值的时候必然会产生重复代码,所以可以通过调用父类的构造函数来给成员变量赋值 Super()必须要是构

深夜睡不着,第二篇随笔,说说js的创建实例化过程

媳妇白天加班太累了,我呢,白天睡太多了,晚上太过于亢奋,自己一个人偷偷的拿着笔记本到客厅写博客~ 上一篇可能很多人看到了觉得就是个joke,那个真的是一个joke,但是在实际开发过程中,很多年轻的coder对于写不写分号很不以为然,要知道,真实生产环境下的代码要远比我栗子中给的代码要复杂得多,因此很有可能不用我的误导,你就看不出来,因此浪费了一下午的宝贵开发时间,所以写代码还是要规范一些. 第二篇文章我依旧不想讲太过于深入的技术,还是说两个“花边新闻”,聊以自慰罢了,看官有兴致你就看,没兴致也可

【Spring源码分析】非懒加载的Bean实例化过程(下篇)

doCreateBean方法 上文[Spring源码分析]非懒加载的Bean实例化过程(上篇),分析了单例的Bean初始化流程,并跟踪代码进入了主流程,看到了Bean是如何被实例化出来的.先贴一下AbstractAutowireCapableBeanFactory的doCreateBean方法代码: 1 protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final Object[]

java基础部分----3.继承、子类实例化、函数的复写

1.继承 java只支持单继承,一个子类只能继承一个父类.一个父类可以有多个子类 关键字:extends 减少重复代码 2.继承的语法特点 class Student extends Preson{ } 如果子类继承父类,同时子类在这个基础上添加自己的成员变量和成员函数 3.子类实例化 1.生成子类的过程 在子类的构造函数中,必须调用父类的构造函数(根据()传入的参数个数以及类型决定) lass Student extends Person{ int grade; Student(){ supe

一个对象的实例化过程【重点】

一.过程  Person p = new Person();  1,JVM会去读取指定路径下的Person.class文件,并加载进内存,    并会先加载Person的父类(如果有直接父类的情况下)  2,在堆内存中开辟空间,分配地址.  3,并在对象空间中,对对象中的属性进行默认初始化  4,调用对应的构造函数,进行初始化  5,在构造函数中,第一行会先调用父类中的构造函数进行初始化.  6,父类初始化完毕后,再对子类的属性,进行显示初始化.  7,指定构造函数的特定初始化  8,初始化完毕