6.1 this和super各有几种用法?
1.this的用法:(1)this.域变量、this.成员方法:在一些容易混淆的场合,例如成员方法的形参名与域变量名相同,或者成员方法的局部变量名相同时,在方法内借助this来明确表示用的是类的域变量。
(2)this(参数)----引用重载的构造方法
(3)this指代当前对象
2.super的用法:super能指代父类中的域变量或方法。若子类的域变量名或成员方法名与父类的域变量名或成员方法名相同时,要调用父类的同名方法或使用父类的同名域变量,则可用关键字super来指代。(1)super.域变量、super.成员方法(参数)。
6.2子类对象实例化的具体过程是什么?
1.为子类对象分配内存空间,对域变量进行默认初始化。
2.绑定构造方法,将new对象中的参数传递给构造方法的参数形式。
3.调用this或super语句,注意二者必居其一,但不能同时存在。
4.进行实例变量的显示初始化操作。
5.执行当前构造方法体中的程序代码。
6.3类的域变量和方法中定义的局部变量在初始化上有何区别?
类的域变量属于全局变量在使用前初始化即可,局部变量必须在方法内进行初始化
6.4模仿形成抽象类的过程,自选角度,形成一个自己的抽象类,并在程序的类继承和引用中体现抽象类的作用?
6.5接口有什么作用?自己定义一个接口,并给出实现类和使用类?
Java接口是Java语言中存在的结构,有特定的语法和结构,Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。接口实现和类继承的规则不同,因为Java接口不涉及表象,因此Java接口本身没有任何实现。
6.6抽象类与接口的异同点是什么?
相同点
1).抽象类可以有实现(包括构造函数),而接口不可以有任何实现,重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。
2).抽象类中还以有成员变量(包含静态成员变量)、属性、常量和静态方法,并且他们可以是非公共的;而接口中不能有成员变量、常量、静态方法,只能有公共的属性。
3).抽象类可以从另一个类或者一个/ 多个接口派生;而接口不能从另一个类派生却可以实现另一个或多个接口
不同点
1)、不能实例化;
2)、包含未实现的方法声明;
3)、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);
6.7引用比较方法有哪些?
1.equal方法比较;2.使用“==”进行比较;3.使用instanceof比较引用类型;
6.8内部类的作用是什么?什么情况下使用匿名内部类?
1.内部类可以直接访问外部类中的所有属性,包括修饰符为private的属性或方法
2.在类中需要实例化这个类的地方,定义一个没有名称的类
6.10什么是数据隐藏?如何证明子类对父类同名方法进行重新定义,只能是方法的覆盖而不是方法的隐藏?
封装就是将属性私有化,提供公有的方法去访问私有属性。 为属性创建getter()和setter()方法分别为:读取属性值和为属性赋值。同时在setter()方法里为属性赋值可以做一些数据的处理,增强数据的可维护性。