A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

子类的实例化过程
子类中所有的构造函数默认都会访问父类中空参数的构造函数。
每一个构造函数的第一行都有一条默认的语句super();
为什么子类实例化的时候要访问父类中的构造函数?
因为子类继承了父类,获取到了父类中内容(属性),所以在使用父类内容之前,要先看父类是如何对自己的内容进行初始化的。
当父类中没有空参数的构造函数时,子类的构造函数必须通过this或者super语句指定要访问的构造函数。
子类构造函数中如果使用this调用了本类构造函数,那么默认的super();就没有了,因为super和this都只能定义在第一行,所以只能有一个。但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。

super语句必须要定义在子类构造函数的第一行!因为父类的初始化动作要先完成。

final关键字
final可以修饰类,方法,变量。
final修饰的类不可以被继承。
final修饰的方法不可以被覆盖。
final修饰的变量是一个常量,只能被赋值一次。
为什么要用final修饰变量,其实,在程序中如果一个数据是固定的。那么直接使用这个数据就可以了,但是这种阅读性差,所以应该给数据起个名称。而且这个变量名称的值不能变化,所以加上final固定。
写法规范:常量所有字母都大写,多个单词,中间用_连接。

抽象类概述
抽象定义:
抽象就是从多个事物中将共性的、本质的内容抽取出来。
抽象类:Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称为抽象方法,包含抽象方法的类就是抽象类。
抽象方法的由来:
多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功能声明,没有功能主体的方法称为抽象方法。
抽象类的特点
抽象类和抽象方法必须用abstract关键字来修饰。
抽象方法只有方法声明,没有方法体,定义在抽象类中。
格式:修饰符abstract返回值类型函数名(参数列表);
抽象类不可以被实例化,也就是不可以用new创建对象。
原因如下:
1.抽象类是具体事物抽取出来的,本身是不具体的,没有对应的实例。例如:犬科是一个抽象的概念,真正存在的是狼和狗。
2.而且抽象类即使创建了对象,调用抽象方法也没有意义。
3.抽象类通过其子类实例化,而子类需要覆盖掉抽象类中所有的抽象方法后才可以创建对象,否则该子类也是抽象类。
抽象类相关问题
抽象类中是否有构造函数?答:有,用于给子类对象进行初始化。
抽象关键字abstract不可以和哪些关键字共存?答:private、static、final。
抽象类中可不可以没有抽象方法?答:可以,但是很少见。目的就是不让该类创建对象,AWT的适配器对象就是这种类。通常这个类中的方法有方法体,但是却没有内容。
抽象类和一般类的区别?
相同点:抽象类和一般类都是用来描述事物的,都在内部定义了成员。
不同点:1.一般类有足够的信息描述事物。抽象类描述事物的信息有可能不足。2.一般类中不能定义抽象方法,只能定义非抽象方法。抽象类中可定义抽象方法,同时也可以定义非抽象方法。3.一般类可以被实例化。抽象类不可以被实例化。
抽象类一定是个父类吗?答:是的,因为需要子类覆盖其方法后才可以对子类实例化。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马