内容回顾

来源:互联网 发布:b2b自动发布软件 编辑:程序博客网 时间:2024/05/22 10:57
1:教练和运动员案例(学生分析然后讲解)
乒乓球运动员和篮球运动员。
乒乓球教练和篮球教练。
为了出国交流,跟乒乓球相关的人员都需要学习英语。
请用所学知识:
分析,这个案例中有哪些抽象类,哪些接口,哪些具体类
答:抽象类:教练和运动员.
  接口:学习英语
  具体类:乒乓球运动员,篮球运动员,乒乓球教练,篮球教练,乒乓球运动员中需要学习英语的人,乒乓球教练中需要学习英语的人.
2:final关键字可以干什么?有什么特点?
作用:1.用来修饰类2.修饰类的成员变量.3.修饰局部变量4.修饰成员方法.
特点:1.修饰类时,该类不能被继承.2.修饰成员变量时,该成员变量的值不能改变.3.当修饰局部变量时,如果该局部变量的类型是基本类型数据,其值不能改变,若该变量是引用类型时,那么他不能重写在堆内存空间中再次创建空间,但是它的值可以改变.4.修饰成员方法时,该方法不能被重写


3:final关键字的面试题?
A:修饰局部变量
答:当该局部变量的类型为基本数据类型,那么此变量的值不会改变,若该局部变量的类型为引用类型,那么它不能重写在堆内存空间中再次创建空间,但是它的值可以被改变.
B:初始化时机
答:1.构造代码块中进行初始化2.构造方法中进行初始化3.定义成员变量的时候,可以直接进行初始化,##以上三种方式只能同时使用一种.

4:多态是什么,前提是什么?
答:有一个用来判断是否应该设计为继承关系的简单规则,并且能用"is-a"的关系描述出来,表明子类的每个对象也是超类的对象,既一个事物在不同时刻体现出来的不同状态.
前提:1.必须有继承关系(如果没有继承关系,谈不上多态!)2.必须有方法重写3.有父类引用指向子类对象:向上转型(例:Fu f=new Zi();)
5:多态中成员访问的特点?
成员变量:编译看左边,执行看左边.
成员方法:编译看左,运行看右,由于存在方法重写,所以访问的就是子类中的成员方法
(与多态无关?)静态方法:编译看左,执行看右,当存在static修饰时,与类加载有关,与对象无关,所以不存在方法重写.


6:多态的好处及弊端?如何解决多态的弊端?
好处:1.提高代码的维护性(由继承保证)2.提高代码的扩展性(由多态保证)
弊端:1.不能访问子类的特有功能
解决方案:1.创建子类的具体对象,来访问自己的特有功能;虽然可以解决多态的弊端,但是从内存角度考虑,需要创建子类对象,那么必须在堆内存开辟空间,耗费内存,浪费空间!2.向下转型:将父类的引用强制转换为子类的引用:前提必须有父类的引用存在;
(例:Fu f=new Zi();Zi z=(Zi)f;)
7:什么是向上转型?什么是向下转型?
向上转型:指父类的引用指向子类的对象,(例:Fu f=new Zi();)
向下转型:父类引用强制转换为子类的引用,向下转型必须依赖于向上转型.(例:Fu f=new Zi();  Zi z=(Zi)f; )
8:抽象类概述及其特点?
答:1.每一个动物的吃和睡的功能不一样,不应该把动物类定义为一个具体类,而是给出一个声明(abstract)2.当一个类中如果有抽象功能(抽象方法)的时候,那么这个类一定要定义为抽象类!
抽象类的子类的特点:抽象类的子类是抽象类,那么没有意义!最终使用的就是通过子类进行对象初始化的,如果子类都被抽象修饰了,那么也不能创建对象,所以没意义
9:抽象类成员特点?
答:1.成员变量:可以是变量也可以是自定义常量.2.构造方法:抽象类可以有构造方法,包括有参构造和无参构造.作用:通过抽象类多态的形成,让子类进行数据的初始化.
10:抽象类的小问题
A:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
B:abstract不能和哪些关键字共存
11:接口的概述及其特点?
概述:接口体现的是一种:扩展功能:比如:猫可以跳高(并不是所有的猫都具有跳高功能)表示:interface 接口名{    }##借口里只能是抽象方法,(public <abstract>void jump()其中的abstract属于默认值)且不能有构造方法.(不能实例化)
接口的特点:不能实例化(不能直接创建对象) 
12:接口的成员特点?
成员变量:只能是常量:存下默认修饰符:public static final (永远建议自己给出默认修饰符)
构造方法:接口是没有构造方法的
成员方法:接口中的成员方法默认修饰符:public abstract(永远建议自己给出默认修饰符)
13:抽象类和接口的区别?
1.成员的区别
(1)成员变量:
抽象类:可以是变量也可以是自定义常量
接口:只能是常量:存下默认修饰符:public static final (永远建议自己给出默认修饰符)
(2).构造方法:
抽象类:可以有无参构造和有参构造.作用:通过子类进行数据的初始化
接口:没有构造方法
(3).成员方法的区别:
抽象类:可以是抽象方法也可以是非抽象方法
接口:只能是抽象方法.且存在默认修饰符(abstract)
2.关系的区别:
类与类的关系:继承关系,extends----java中只支持单继承,不支持多继承,但可以多层继承.
类与接口的关系:实现关系,implements----一个类在继承另一个类的同时,可以实现多个接口(class 子实现类名 extends object implements 接口1,接口2.......)
接口与接口的关系:继承关系,可以支持单继承,也可以支持多继承.
3.设计原理的区别:
抽象类:体现的是一种"is-a"的关系,存在继承关系(抽象类多态)
接口:体现的是一种"like-a"的关系,由于接口的一种扩展功能.
原创粉丝点击