面相对象案例总结
2015-12-16 16:31
218 查看
面相对象案例总结
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.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");
}
});
}
}
相关文章推荐
- python os.system os.popen 区别
- java处理url中的特殊字符%等
- PVlan
- CSS3实现气泡效果
- netflix zuul 学习
- 王者-甄别同一板块强弱股的方法【真假美猴王】
- Oracle EBS环境下查找数据源(OAF篇)
- 性能调优案例分享:jvm crash的原因 1
- 集合的常见功能总结
- 获取导航栏和状态栏的高度
- could not initialize proxy - no Session
- iOS18 程序启动过程
- 邮件系统中如何过滤重复邮件?
- UIAlertView与UIActionSheet
- python3下urlopen解析中文url编码错误
- 邮件系统中如何过滤重复邮件?
- 程序员 身边的趣事
- 老李分享:JVM调优
- Struts2框架搭建
- UltraEdit怎么注册激活