java学习笔记(六)继承

继承是面向对象编程中最重要的特征之一,它允许通过继承一个已经存在的类,来编写一个新类。已有的类称为父类,也可以称为基类,超类,新类称为子类也称为派生类。

继承使用关键字extends,用在类名之后,例:public void class salary extends Employee(){

}

子类salary 继承父类Employee

java中的类只能继承一个类。

子类能继承父类中用public protected 修饰的成员。

继承的单根性(单继承):一个java类只能有一个父类。

继承的传递性(多继承):一个java类可以有父类,父类也可以有父类,以此类推。

继承的优点:1.代码的可重用性;2.父类的方法和属性可用于子类;3.使设计应用程序更加简单;4.子类可以扩展父类的属性和方法。

构造方法不能被继承。

所有类的根类都是Object类,如果一个类没有显示的继承另一个类,那么它的父类就是java.lang.Object。Object类中的方法签名:

1.public final Class getClass():使用该方法可以得到我们调用方法的对象的class对象的引用。

2.public int hashCode():该方法返回对象的哈希码值,当使用哈希表以及使用哈希的其它数据结构时,可以用到该方法。

3.public boolean equals(Object x):检测两个对象是否相等。

4.protected Object clone():用于创建对象的一份拷贝,会抛出异常:CloneNotSupportedException.

5.public String toString():返回对象的字符串表示。

6.pritected void finalize():在对象将要被垃圾回收的时候调用,会抛出异常:Throwable

7.public final void wait():在Object类中,该方法还有两个重载的方法,在一个对象上调用将导致当前线程停止执行,直到其它线程在对象上调用notify()为止。wait()和notify()用于线程同步。

8.public final void notify():在Object类中还有一个notifyAll()方法。这些方法用于重启在对象上调用wait()方法时被阻塞的任何线程。

方法重写:子类可以重写从父类继承的方法,从而允许子类添加或者改变父类中方法的行为。

重写规则:(1).子类的方法的返回值的类型、方法名和形式参数列表,必须和父类中的是相同的。

(2).访问修饰符必须不小于父类中的访问修饰符。例:如果父类的方法的访问修饰符是public,子类的必须是public;如果父类的是protected,子类的必须是public或protected.

(3).子类中重写的异常不能抛出比父类更多的异常。

用equals()方法比较两个对象是否相同:如果两个对象是相等的,那么它们必须产生相同的哈希码。因此,如果一个类重写了equals()方法,通常也需要重写hashCode()方法。比较运算符“==”用于检测是否两个引用指向同一对象。

方法重写是父类与子类之间的关系,方法重载是类的内部方法之间的关系。

关键字super:子类想要给继承的方法添加行为,但是并不是完全替换父类的方法。在这种情况下,可以使用super来调用父类中重写的方法。

子类中调用父类的构造器:super(参数名);必须写在方法中的第一条语句。默认情况下,子类构造器调用父类的无参构造器。

关键字final:修饰类,这个类不能被继承,没有子类;修饰方法,这个方法不能被重写;修饰变量,值不能被改变。

时间: 2024-12-04 14:55:22

java学习笔记(六)继承的相关文章

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学习笔记-4.继承与多态

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

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

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

JAVA学习笔记(六十一)- 反射Reflection

反射Reflection import java.lang.reflect.Modifier; /* * 反射Reflection * java.lang.Class类 */ public class Test01 { public static void main(String[] args) { String name = "tom"; // 方式一:通过对象getClass()方法 // 任意一个类的对象,都有一个getClass()方法 // 可以通过此获取获取当前对象的类型所

Java学习笔记六(I/O流)

1.介绍 在实际开发过程中经常会用到数据的输入/输出操作,本篇博客着重分析一下,java中经常用到的有关IO操作的类.而在java中可以将常用的流分为两个部分:字节流和字符流. 1.流的抽象基类 字节流 字符流 输入流 InputStream Reader 输出流 OutPutStream Writer 正如上图表格所示,字符和字节流都有自己的基类,其余的都是继承基类的扩展流的操作.下面会着重的讲解一下.(只要会了字符流,字节流与其操作一样,只不过操作的文件类型不一致而已) 2.字符流 专门用于

黑马程序员——JAVA学习笔记六(多线程)

1,    什么是多线程?一个程序可以执行多个任务,每一个任务称为一个线程,运行多个线程的程序称为多线程程序. 进程:正在进行中的程序(直译). 线程:进程中一个负责程序执行的控制单元(执行路径).   多线程的好处:解决了多部分代码同时运行的问题.多线程的弊端:线程太多,会导致效率的降低. 其实,多个应用程序同时执行都是CPU在做着快速的切换完成的.这个切换是随机的.CPU的切换是需要花费时间的,从而导致了效率的降低 2 ,    创建线程方式:  创建线程方式一:继承Thread类 1.定义

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学习笔记六:多态

多态通过分离“做什么”和“怎么做”,从另一个角度讲接口和实现分离开来.多态的作用是消除类型之间的耦合关系,多态方法调用允许一种类型表现出与其他相似类型之间的区别,只要他们都是从同一个基类导出而来的. 1.方法参数中传入基类,可以使子类方便调用 class Instrument { public void play(Note n) { System.out.println("Instrument.play()"); } } class Wind extends Instrument {

java学习笔记六——数组

数组类型 数组是一种常见的数据结构,可用于存放多个数据,每一个数组元素存放一个数据,通常可以通过下标进行访问其元素. Java数组要求所有数组元素具有相同的数据类型.因此,数组元素的数据类型是唯一的. 数组定义如下: type[] arrayName; //推荐使用 type arrayName[]; //不推荐使用 通常我们都使用第一种方式.注意:数组的定义不能指定数组长度,只有在初始化时才指定长度. 数组初始化: int[] intArr = new int[]{1,2,3,4,5}; //