1.this和super各有几种用法?
(1)this的用法共有三种
- 表示当前对象引用,常用于形参或局部变量与类的成员变量同名的情形,使用this成员名表示当前对象的成员。
public class FighterPlane1{
String name = "su35";
int missileNum;
void init(String name){
this.name = name;
System.out.println(this.name);
}
public static void main(String[] arg){
FighterPlane1 fp = new FighterPlane1();
fp.init("f35");
}
}
-
表示当前对象
-
调用当前类的构造方法
(2)super的用法有两种 -
super.域变量、super.成员方法(参数)
-
super(参数)
2.子类对象实例化的具体过程是什么?
(1)为对象分配内存空间,对成员变量进行默认的初始化
(2)绑定构造方法,将new中的参数传递给构造方法的形式参数
(3)调用this或super语句(二者必居其一,不能同时存在)
(4)进行实例变量的显示初始化操作
(5)执行当前构造方法的方法体中的程序代码
3.类的域变量和方法中定义的局部变量在初始化上有何区别?
类的域变量在类初始化时就开始创建了,而方法中的局部变量是在调用到该方法时,才会为该变量创建。
4.模仿形成抽象类的过程,自选角度,形成一个自己的抽象类,并在程序的类继承和引用中体现抽象类的作用?
import java.awt.*;
import java.applet.*;
abstract class Volume{
protected int x,y,z;
protected double r;
public Volume(int x,int y,int z,double r){
this.x=x;
this.y=y;
this.z=z;
this.r=r;
}
abstract public double getArea();
abstract public double getVolume();
}
//定义各子类
class Lifangti extends Volume{
public double getArea(){
return(x*y);
}
public double getVolume(){
return(x*y*z);
}
public Lifangti(int x,int y,int z){
super(x,y,z,z);
}
}
class Yuanzhuti extends Volume{
public double getArea(){
return(r*r*Math.PI);
}
public double getVolume(){
return(r*r*Math.PI*z);
}
public Yuanzhuti(int z,double r){
super(r,r,z,r);
}
}
public class RunVolume extends Applet{
Lifangti lf = new Lifangti(3,4,5);
Yuanzhuti yz = new Yuanzhuti(5,2.3);
public void paint(Graphics g){
g.drawString("Lifangti's area:"+lf.getArea(),50,35);
g.drawString("Yuanzhuti's area:"+yz.getArea(),50,35);
g.drawString("Lifangti's Volume:"+lf.getVolume(),50,55);
g.drawString("Yuanzhuti's Volume:"+yz.getVolume(),50,55);
}
}
5.接口有什么用?自己定义一个接口,并给出实现类和使用类。
接口的设计用途:通用可扩展代码,多态体现。
//定义接口
public interface School{
public static final int OPEN = 1;
public static final int CLOSE = 0;
abstract void shangke();
abstract void xiake();
abstract void fangjia();
abstract void exam();
}
//实现接口
class OurSchool implements School{
public void shangke(){
System.out.println("8;00 shangke");
}
public void xiake(){
System.out.println("11;40 xiake");
}
public void exam(){
System.out.println("18;00 exam");
}
public void fangjia(){
System.out.println("10.1 fangjia");
}
}
//使用接口
public class MySchool{
public static void main(String args[]){
School s = new OurSchool();
s.shangke();
s.xiake();
s.exam();
s.fangjia();
}
}
6.抽象类与接口的异同点是什么?
7.引用比较方法有哪些?
- equals方法:equals方法是Object类的方法,比较本引用和参数指明的某个引用是否相等,即是否指向同一对象。返回true或false。
- 使用“=”比较
- instanceof:二元运算符。
8.内部类的作用是什么?什么情况下使用匿名内部类?
(1)内部类就是在某个类的内部又定义了一个类。
(2)在类中需要实例化这个类的地方,通常为方法内,定义一个没有名称的类,即匿名内部类。
10.什么是数据隐藏?如何证明子类对父类同名方法进行重新定义,只能是方法的覆盖,而不是方法的隐藏?
数据隐藏是:只提供public方法来访问类中的私有属性。