面相对象案例总结

面相对象案例总结


1.Override 和 Overload的区别?Overload是否可以改变返回值类型?
Override(方法重写):
在子类中,出现和父类中相同的方法申明的现象。
Overload(方法重载):
用一个类中,出现方法名相同,参数列表不同的现象。

Overload和返回值类型无关,所以可以改变返回值类型。


2.this 和 super的区别和各自的作用?
this代表本来对应的引用;
super代表父类存储空间的标识(父类引用,可操作父类的成员)。
使用区别:
A:调用成员变量
this.成员变量名 调用本类的成员变量
super.成员变量名 调用父类的成员变量
B:调用构造方法
this(...) 调用本类的构造方法
super(...) 调用父类的构造方法
C:调用成员方法
this.成员方法名 调用本类的成员方法
super.成员方法名 调用父类的成员方法
总结:this访问本类成员,super访问父类成员。

3.一个类的初始化过程(总结的好像有问题,看出问题的朋友请指正)
A:成员变量初始化
a:默认初始化
b:显示初始化
c:构造方法初始化
注意:子类构造方法执行前默认先执行父类的无参构造方法
 子类的构造方法的第一条语句默认都是:super();
 
解释:子类继承父类中的数据,有可能会使用,所以,子类初始化之前
 必须先完成父类的初始化  

5.分层初始化
即子父类初始化(子类初始化之前先初始化父类)
看程序写结果
class X{
Y y = new Y();
X(){
System.out.print("X");
}
}
class Y{
Y(){
System.out.print("Y");
}
}
public class Z extends X{
Y y = new Y();
Z(){
super(); //难点在于,这里super()仅仅表示分层初始化
System.out.print("Z"); //与顺序执行无关。
}
public static void main(String[] args){
new Z();
}
}
结果:YXYZ

6.关于抽象类的三个小问题
A:抽象类无法实例化,那么其构造方法存在的目的是什么?
答案:用于子类访问父类数据的初始化。
B:没有抽象方法,但却定义为抽象类的类,有什么用:
答案:为了不让创建对象。
C:abstract不能和那些关键字共存
a:final 冲突
b:private 冲突
c:static 无意义

7.接口成员的特点
A:成员变量
只能是常量,默认修饰符:public static final
B:构造方法
没有构造方法
C:成员方法
只能是抽象的方法,默认修饰符:public abstract

8.成员内部类问题(看程序写结果)
class Outer{
public int num = 10;
class Inner{
public int num = 20
public void show(){
int num = 30;
System.out.print(num);
System.out.print(this.num);
System.out.print(Outer.this.num);
}
}
}
答案:30 20 10

9.匿名内部类问题(补齐代码)
interface Inter{
void show();
}
class Outer{
//填写代码
}
class OuterDemo{
public static void main(String[] args){
Outer.method().show();
}
}
输出:hello
答案:public static Inter method(){
return new Inter(){
public void show(){
System.out.println("hello")
}
};
}


10.匿名内部类的使用
interface Person{
public abstract void study();
}
class PersonDemo{
public void method(Person p){
p.study();
}
}
class Test{
public static void main(String[] args){
PersonDemo pd = new PersonDemo();
pd.method(new Person(){
public void study(){
System.out.println("javaSE");
}
});
}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值