子类可继承父类所有可被访问到的数据和方法,故私有的子类不能被继承。
1.(super)关键字的使用
(1)调用父类的构造方法
(2)调用父类的方法
2.构造方法链:
public A(){ public A(){
Super(); 必须作为第一条语句
} }
Public A(doublic d){ public A(){
//some statements super();
} //some statements
}
任何情况下,构造一个类的实例时,将会沿着继承链调用所有父类的构造方法,父类的构造方法在子类构造方法之前调用,这叫做“构造方法链”。
警告:如果一个类需要扩展,最好提供一个无参构造方法以避免编程错误。原因可类比c++。
(自定义了带参的构造函数,而未定义无参,则编译器将不会自动生成无参…,导致扩展类中构造方法调用失败)。
3.方法覆盖(method overriding)
注:实例方法仅当可访问时才能被覆盖。如果子类中定义的方法在父类中式私有的,那么这两个方法完全没有关系。
注:与实例方法一样,静态方法也能继承,但不能被覆盖。如父类中的静态方法被重新定义,则父类方法被隐藏。
4.重载与覆盖(略)
5.对象类object和它的toString()方法
熟悉object类提供的方法是非常重要的,这样才能在自己的类中使用它们。toString()方法的签名是:public String toString()。调用对象的toString()返回一个代表该对象的字符串。默认下,返回一个由该对象所属的类名,对符号(@)和该对象十六进制的散列码组成的字符串。
注:System.out.println(object)等价于System.out.println(object.toString())
6.多态性、动态绑定和一般程序设计
动态绑定工作机制如下:假设对象o是c1,c2,…,c(n-1),cn的实例,其中c1是c2的子类,c2是c3的子类,…,c(n-1)是cn的子类。即cn是最一般的类,c1是最特殊的类。在java中,cn是object类。若对象o调用一个方法P,java虚拟机依次在类c1,c2,…,c(n-1),cn中查找P的实现,直到找到为止。一旦找到一个实现,便停止并调用第一次找到的实现。
7.对象转换和instanceof运算符:
子类→父类即object o=new()是合法的(隐式类型转换)
父类→子类则需要显示转换。
注:一个好的习惯是,在进行转换时确保该对象是另一个对象的实例。这可利用instanceof完成。
注:对象成员访问运算符(.)优先于类型转换运算符。使用括号保证在点(.)运算符之前转换。例如:((Circle)object).getArea();
8.数组线性类表ArrayList类:用于存储不限个数的对象。
9.Protected数据和方法:
数据和方法的可见性
类中成员的修饰符 类内访问 包内访问 子类内访问 不同包间访问
public √ √ √ √
protected √ √ √ -
(default) √ √ - -
private √ - - -
注:子类可以覆盖父类的protected方法,并把它的可见性改为public。但是子类不能降低父类中定义的方法的可访问性。例:如一个方法在父类为public,在子类中必须也定义为public。
10.final类,方法和变量
final可以用来定义常量
修饰类时表明该类是终极的,不能做父类
修饰方法时定义为终极方法,终极方法不能被它的子类覆盖。
注:修饰符用在类和类成员(数据和方法)上,只有final修饰符还可以用在方法中的局部变量上。方法内的终极局部变量就是常量。
11.对象类object中的方法
(1)equals方法
注:“==”用来比较两个基本数据类型的值是否相等或者判断两个对象是否具有相同的引用值。如果想让equals方法能够判断两个对象是否具有相同的内容,应在定义它的对象类中进行修改。“==”强于equals方法,其中“==”判断两个引用变量是否指向相同的对象。
警告:在子类中,使用签名equals(someclassName obj)(例如:equal(Circle c))覆盖equals方法是一个常见的错误。应该使用equals(object obj)。
(2)hashCode方法
注:自己的类覆盖equals方法时,应该覆盖hashCode方法。根据约定,如果两个对象相等,它们的散列码一定相同。
(3)finalize方法
(4)Clone方法
要创建一个有单独内存空间的新对象,使用clone()方法。
如:newObject = someObject.clone();
注:不是所有的对象都可以克隆,要成为一个可克隆的对象,它的类必须实现java.lang.Cloneable接口。
(5)getclass方法(用到时再说)
<!--EndFragment-->
相关推荐
它为我们提供了构建复杂系统所需的诸多工具和概念,其中继承和多态是两个核心概念。本篇文章将围绕Java继承和多态机制的深入讲解,探索它们是如何促进代码的灵活性和扩展性的。 ### 继承机制 继承,作为面向对象...
在C++编程语言中,继承和多态是面向对象编程(OOP)的两大核心概念。这个名为“C++经典实例——体现继承和多态”的资源显然是为了...通过深入学习和实践,你将能够更好地设计和实现符合面向对象原则的高效软件系统。
### Java 学习课件:继承和多态 #### 继承的概念与应用 继承是面向对象编程的一个核心概念,它允许我们定义一类对象获取另一类对象的特性。这种机制可以减少代码冗余,增强代码复用性,并使得类之间的关系更加清晰...
Python是一种高级编程语言,以其简洁明了的语法和强大的功能深受程序员喜爱。...在学习Python之继承和多态的过程中,深入理解这两个概念的原理,以及如何在实际项目中应用它们,将对提升编程技能大有裨益。
学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口
java 学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口
JAVA 封装继承与多态 PPT 教案学习 JAVA 封装继承与多态是面向对象程序设计语言中三个重要的概念,本文将对这三个概念进行详细的解释。 一、封装 封装是指隐藏对象的内部细节,使对象外部不能随意存取对象的内部...
学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口 学习-java继承和多态之接口
在编程领域,继承和多态是面向对象编程(OOP)中的两个核心概念,它们极大地提高了代码的重用性和灵活性。...通过学习这个“继承与多态程序演示”,你可以深入理解这两种机制,并能够在实际项目中有效地应用它们。
学习-java继承和多态之接口,继承和多态是两个核心的面向对象编程概念
C++随堂测试(继承、多态、重载) 本资源摘要信息涵盖了C++编程语言中三个重要的概念:继承、多态和重载。...本资源摘要信息涵盖了C++编程语言中继承、多态和重载三个重要概念的知识点,对于学习C++的读者非常有帮助。
继承与多态 继承是面向对象编程(Object-Oriented Programming)中的一种机制,允许一个类继承另一个类的属性和行为。通过继承,子类可以重用父类的代码,减少代码的冗余和重复。同时,继承也可以实现多态性,即...
面向对象程序设计之继承和多态 继承和多态是面向对象程序设计的两个核心概念,它们是构建复杂软件系统的基础。本文将详细介绍继承和多态的概念、特点、种类和应用场景。 一、继承 继承是面向对象程序设计中的一种...
在面向对象编程语言中,继承和多态是非常重要的概念。它们提供了强大的机制来管理代码的复杂性,并且能够有效地复用现有代码。本文将详细介绍Java中的继承和多态概念,并通过具体的示例帮助初学者更好地理解这些概念...
通过查看和分析这些代码,你可以深入理解继承和多态的概念,并从中学习如何在实际项目中有效地运用它们。 总的来说,继承和多态是面向对象编程的关键要素,它们使得代码更加灵活、可扩展且易于维护。通过不断的实践...
在实训部分,`Homework`和`4.Lesson_面向对象继承,多态,接口_女子学院实训`这两个文件很可能是练习题或者案例研究,旨在帮助学习者将理论知识应用到实际编程中。通过这些实践,你可以更好地理解如何在实际项目中...