目录:
1.1类的基础
大家能够理解类的概念,例如动物类,可以进一步细分为很多子类、狗、猫、老虎、狮子等,这些子类共同都属于动物这个大类,都继承了动物共同的特性,同时又具有各自的特点。
继承也被用于程序设计中,在现有的类(称为父类或基类)上建立新类(称为子类或派生类)的处理过程即为继承
利用继承,可以实现代码的重用。即当一个类从另一个类派生出来时,派生类就自然具有了基类数据成员、方法成员等,基类定义中这些成员的代码,就不需要在派生类定义中重写,在派生类的定义,只需要写基类定义中所不具有的代码即可。
在Java中,所有的类都是通过直接或间接地继承Object类得到的。
声明派生类的一般形式如下:
【访问修饰符】class 类名 extends 基类{
类的成员
}
后 《 前
在Java中,派生类不能继承其基类的构造方法。
在创建派生类对象时,先调用基类构造方法,再调用派生类自己的构造方法。
使用 super 关键字调用基类构造方法
- super():调用基类无参构造方法。
- super(参数列表):调用基类有参构造方法。
如果没有使用 super 显式调用,编译器就会自动将 super() 作为构造方式的第一条语句(默认调用基类无参构造方法)。
请分析程序运行结果:
通过 super 关键字调用基类有参构造方法。
1.2 成员的隐藏与覆盖
类的继承中,派生类继承了基类的所有成员(构造方法除外)。
当子类定义的成员变量与父类的成员变量同名时,子类隐藏父类的成员变量,即在默认情况下,子类使用自己的成员变量。
当子类定义的方法与父类同名、参数一致时,子类覆盖(重写 override)父类方法,即在默认情况下,引用子类自己的方法。
成员方法重写示例
super 指代一个对象的父类/基类
super 的作用
- 调用父类构造方法
- 取父类中被子类隐藏了的成员变量
- 取被子类覆盖了的方法
super 关键字调用语法
- 调用父类成员变量:super .成员变量名
- 调用父类构造方法:super() 或 super(参数列表)
- 调用父类方法:super.父类方法();
super 关键字示例:
this 代表当前对象
this 的作用
- 可以调用本类的非静态方法和成员变量。
- this 关键字还可以调用本类中的构造方法
this 关键字调用语法:
- this .成员变量名
- this .方法名(参数表)
- this (参数表) //引用本类的构造方法
this 关键字示例
为了阻止一个类的代码被其他类继承,可以使用终极类,即在类前使用 final 关键字。
如:
public final class Animal
{
......
}
则 Dog 类就无法继承 Animal 类,其所有代码需要重新书写。
1.3动态绑定
1.4抽象类
- 下面举一个生活中的例子来理解多态。如果我们要求3种人———孩子、运动员、音乐演奏者都执行一个动作 “play” ,会发生什么情况呢?
- 孩子会出去玩耍。
- 运动员进行比赛。
- 演奏者开始演奏。
对于同一个命令,不同的人会有不同的反应,执行不同的动作,这就是生活中的一个多态。在程序设计中,对于同一个方法,由于执行方法的不同,方法的内容就不同。执行后的结果也是不相同的。
多态是指不同类的对象,调用同一个方法出现不同的结果。
抽象方法:只有方法的说明,没有任何代码的实现。用 abstract 修饰符进行声明。它告诉编译器,派生类必须通过重写该方法以提供它们自己实现。
抽象类:含有一个或一个以上的抽象方法的类。
抽象方法:只有方法的声明,没有任何代码的实现。
抽象类:含有一个或一个以上的抽象方法的类。
- 抽象类中可以包含有一般方法,也可以包含有抽象方法。
- 抽象类只能作为基类。它本身不能实例化。
- 如果抽象类的子类不能实现所有的抽象方法,那么子类也必须定义为抽象类,即抽象类派生的非抽象子类,必须实现所有抽象方法。
文章到此结束,欢迎大家留言补充!