---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------
子父类出现后,类成员的特点:
- 类中成员:
- 1,变量。
- 如果子父类中出现非私有的成员变量时,
- 子类要访问本类的变量用this,
- 要访问父类的变量用super,super代表的是父类的应用。
- 2,函数。
- 3,构造函数。
- 1,变量。
- super:父类对象。super关键字只能在子类内部使用,不能在非子类内使用
- 变量的特点
- 有了父类以后,内存中就变得不一样。
- 加载子类class文件前先加载父类class。
- 方法区分静态区、非静态区(存放方法), 非静态区中存放方法,父类、 子类 方法先后加载进方法区
- 对象在堆中建立。
- 内存中只有一个子类对象,
- 子类对象一new后分配属性空间:子类属性和父类属性。
- 子类中除了有this指向对象以外,还有super指向子类对象中的父类属性。
- 函数的特点
- 子类对象拿到了父类的函数,可以直接super调用。
- 子父类的函数一致时,使用子类的,这种特性叫重写(覆盖)。
- 当子类继承了父类,沿袭了父类的功能到子类中,子类虽具备该功能,但是功能却和父类不一致,这时保留父类的功能定义,重写父类内容。
- 在子类中super.函数可以添加上父类功能。
- 注意:
- 子类覆盖父类,必须保证子类权限大于等于子类权限,才可以覆盖,否则编译失败。
- 静态只能覆盖静态。牵扯到内存的先后加载问题。
- 重载:只看同名函数的参数列表,
- 重写:子父类方法要一模一样,比如返回值如果不一样是不允许的,JVM不知道掉用谁。
- 构造函数
- 构造函数 不会 存在重写,因为构造函数与类同名,子父同名类不允许出现。
- 子类对象初始化,会先执行父类构造函数。子类不显示调用父类构造函数的时候,子类的所有构造函数第一行隐式是super();调用父类空参数构造函数(非空参数的不会执行)。那么如果父类没有空参数的构造函数的时候,子类就也不能有空参数构造函数,因为没有父类的空参构造函数供其初始化。
- 为什么子类一定要访问父类构造函数?
- 因为父类中的数据,子类可以直接获取。所以子类对象建立时,需要先查看父类是如何对数据进行初始化的。
- 如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。
- 简单来的说,就是子类需要父类初始化完后数据。
- 注意:
- super和this都需要定义在第一行。因为初始化动作需要先做。
- this在第一行不会影响super,因为this调用的是另一个构造函数,因为每一个构造函数第一句都是隐式调用super,所以子类中至少有一个构造函数会访问父类。
- 当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来制定要访问父类中的构造函数。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net
相关推荐
Java的类加载器体系采用的是双亲委派模型,这意味着当一个类加载器接收到加载类的请求时,它会首先将任务委托给父类加载器,只有当父类加载器无法找到该类时,子类加载器才会尝试自己加载。 其次,自定义类加载器是...
例如,`@Target`定义了注解可以应用在哪些程序元素上,`@Retention`定义注解的保留策略,`@Documented`指示是否将注解包含在Javadoc中,`@Inherited`表示子类是否可以继承父类的注解。 3. **自定义注解(Custom ...
继承是指子类继承父类的所有成员变量和成员方法,而实现是指子类实现接口中的方法。在上面的示例代码中,我们使用了继承关系,例如`Cat`继承自`Animal`,`Dog`继承自`Animal`,`Pig`继承自`Animal`。 三、多态的...
public static String s_StaticField = "子类--静态变量"; // 变量 public String s_Field = "子类--变量"; // 静态初始化块 static { System.out.println(s_StaticField); System.out.println("子类--...
在Java编程语言中,子类继承父类是一种常见的特性,它允许子类扩展或复用父类的功能。当我们创建一个子类对象并将其赋值给父类引用时,这种行为被称为向上转型(Upcasting)。这一过程是自动且安全的,因为子类对象...
### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...
《Java基础案例教程(第2版)》是一本旨在教授初学者Java编程基础知识的教材,其PPT形式的压缩包提供了清晰、直观的教学材料。在深入探讨这些知识点之前,我们首先了解一下Java语言的基础概念。 Java是一种面向对象...
总结,Java反射机制为我们提供了强大的动态性,能够方便地获取和操作类的属性和方法,包括私有成员和子类父类中的成员。通过熟练掌握反射技术,开发者可以实现更灵活、更动态的代码,但也需要谨慎使用,以避免潜在的...
《黑马程序员_Java基础辅导班教程课件[第01期]第15天》是针对初学者设计的一堂深入浅出的Java编程课程,旨在帮助学员巩固和深化Java基础知识。这堂课件涵盖的内容广泛且实用,对于想要在IT行业中开启Java开发旅程的...
这些知识点是Java初学者需要掌握的基础,深入理解和熟练运用这些知识是成为合格的Java程序员的第一步。在实际编程中,还需要学习异常处理、集合框架、IO流、网络编程、多线程高级特性以及设计模式等更多内容。
继承中子父类的成员特点是,成员变量如果子父类中成员变量名不同,直接使用即可,如果变量名相同,局部变量直接用,成员变量用this,父类变量用super。 在继承中,我们可以使用this和super关键字来调用成员变量、...
如果一个类继承一个父类,那么子类会拥有父类所规定的所以成员 子类还可以拥有父类没有的独有成员 父类可以完成的任务,子类对象也可以完成 子类可以调用父类Person p= new student(); 声明父类变量,实例化子类...
本文将对Java基础知识点进行总结,涵盖了变量、数据输入、数组、方法、封装、API、字符串、ArrayList、继承、多态等方面的重要概念。 变量和数据输入 在Java中,变量是存储数据的容器。变量的声明格式为`数据类型 ...
当子类重写父类的方法时,子类对象可以通过父类引用传递,这样就可以根据不同子类对象的实际类型调用相应的方法实现。 #### 10. wait()和sleep()的区别 - `wait()`:是Object类的一个方法,用于使线程等待直到被...
在Java编程语言中,"在父类获取子类属性"是一个常见的需求,特别是在设计模式、继承和多态性等核心概念的应用中。这个主题涉及到面向对象编程的基本原理,特别是子类继承父类后如何访问和操作子类特有的属性。下面...
《Java基础入门(第3版)》是一本针对Java初学者的教材,其课后答案文档提供了对书中习题的解答,旨在帮助读者巩固所学知识。Java是一种面向对象的编程语言,具备跨平台性,由Java虚拟机(JVM)负责解释执行。Java...
由于 Java 语言的多态性使得可以用一个子类的实例赋值给一个父类的变量,而在一些情况下需要判断变量到底是一个什么类型的对象。 在 Java 中,数组也可以是同类收集(homogenous collections)或异类收集...
### 黑马程序员入学Java知识(精华总结) #### 一、Java概述与基础知识 ##### 1、何为编程? 编程是指使用计算机语言来编写指令,这些指令被计算机执行以完成特定任务的过程。通过编程,我们可以控制计算机的行为...
- 继承:子类继承父类的属性和方法,实现代码复用。 - 多态:同一种行为在不同对象上表现出不同的形态,如虚函数和纯虚函数。 3. **C++类和对象** - 类是对象的蓝图,定义了对象的属性和操作。 - 对象是类的...