Java homework4
来源:互联网 发布:淘宝商家发货信息 编辑:程序博客网 时间:2024/06/08 17:20
1.教练和运动员案例
乒乓球运动员和篮球运动员。
乒乓球教练和篮球教练。
为了出国交流,跟乒乓球相关的人员都需要学习英语。
请用所学知识:
分析,这个案例中有哪些抽象类,哪些接口,哪些具体类
答:抽象类:教练和运动员.
接口:学习英语
具体类:乒乓球运动员,篮球运动员,乒乓球教练,篮球教练
乒乓球运动员中需要学习英语的人,乒乓球教练中需要学习英语的人.
2.final关键字可以干什么?有什么特点?
答:final关键字是一个修饰符,可以修饰类、方法和变量。
对于类:
被final修饰的类是一个最终类,不可以被继承。
对于方法:
被final修饰的方法是一个最终方法,不可以被覆盖。
对于变量:
被final修饰的变量是一个常量,只能被赋值一次。
3.final关键字的面试题?
答:A:修饰局部变量
当该局部变量的类型为基本数据类型,那么此变量的值不会改变
若该局部变量的类型为引用类型,那么引用类型的地址值不能生改变,但是,该对象的堆内存的值是可以改变的。
B:初始化时机
1.构造代码块中进行初始化
2.构造方法中进行初始化
3.定义成员变量的时候,可以直接进行初始化
注:以上三种方式只能同时使用一种.
4.多态是什么,前提是什么?
答:多态:一个事物在不同时刻体现出来的不同状态。
前提:(1)条件1:必须有继承关系(如果没有继承关系,谈不上多态)
(2)条件2:必须有方法重写
子类出现了父类一样的方法声明。
(3)有父类引用指向子类对象:向上转型
Fu f = new Zi();
注:多态的三个条件缺一不可。
5.多态中成员访问的特点?
答:成员变量:
编译看左边,运行看左边
成员方法(非静态的成员方法):
编译看左,运行看右;由于存在方法重写,所以就运行最终的就是子类的成员方法
静态成员方法:(静态方法算不上方法重写,静态直接跟类有关系)
编译看左,运行看左
构造方法:还是对象进行初始化,由于是一种继承关系,还是分层初始化。
分层初始化:父类先初始化,然后子类初始化。
6.多态的好处及弊端?如何解决多态的弊端?
答:好处:1.提高代码的维护性(由继承保证)
2.提高代码的扩展性(由多态保证)
弊端:不能访问子类的特有功能
解决方案:(1)创建子类的具体对象,来访问自己的特有功能;虽然可以解决多态的弊端,但是从内存角度考虑,需要创建子类对象,那么必须在堆内存开辟空间。
弊端: 耗费内存,浪费空间。
(2)向下转型:将父类的引用强制转换为子类的引用:前提必须有父类的引用存在。
注:向下转型必须依赖于向上转型
7:什么是向上转型?什么是向下转型?
答:向上转型:指父类的引用指向子类的对象,(例:Fu f=new Zi();)
向下转型:父类引用强制转换为子类的引用,向下转型必须依赖于向上转型.(例:Fu f=new Zi(); Zi z=(Zi)f; )
8.抽象类概述及其特点?
答:1.抽象类的概念:每一个动物的吃和睡的功能不一样,不应该把动物类定义为
一个具体类,而是给出一个声明(abstract)。
注:当一个类中如果有抽象功能(抽象方法)的时候,那么这个类一定要定义为抽象类。
2.抽象类的子类的特点:
抽象类的子类是抽象类,那么没有意义。子类一定是具体类。
最终使用的就是通过子类进行对象初始化的,如果子类都被抽象修饰了,那么也不能创建对象,所以没意义。
9.抽象类成员特点?
答:成员变量:
可以是变量也可以是自定义常量
构造方法:
抽象类可以有构造方法:包括有参构造和无参构造
作用:通过抽象类多态的形式:让子类进行数据的初始化
成员方法:
可以有抽象方法,也可以有非抽象方法
10.抽象类的小问题
答:A:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
B:abstract不能和哪些关键字共存
11.接口的概述及其特点?
答:接口的概念:接口体现的是一种:扩展功能:比如:猫可以跳高(并不是所有的猫都具有跳高功能)。
接口的特点:不能实例化(不能直接创建对象)
12.接口的成员特点?
答:成员变量:只能是常量:存下默认修饰符:public static final (永远建议自己给出默认修饰符)
构造方法:接口是没有构造方法的
成员方法:接口中的成员方法默认修饰符:publicabstract(永远建议自己给出默认修饰符)
13.抽象类和接口的区别?
答:(1)成员的区别:
成员变量:
抽象类:成员变量可以是常量,也可以是变量
接口:成员变量只能是一常量:存在默认修饰符:public static final
构造方法:
抽象类:可以有无参构造,有参构造方法
作用:通过子类进行数据初始化(通过子类创建对象)
接口:没有构造方法的
成员方法的区别:
抽象类:可以有抽象方法,也可以有非抽象方法
接口:只能是抽象方法:存在默认修饰符:publicabstract
(2)关系的区别:
类与类的关系:
继承关系:extends,java中只支持单继承,不支持多继承,但是可以多层继承。
类与接口的关系:
实现关系:implements,并且,一个类在继承另一个类的同时,可以实现多个接口。
(class 子实现类名 enxtends Object implements 接口名1,接口名2…)
接口与接口的关系
继承关系:extends,可以支持单继承,也可以多继承。
(3)设计理念的区别:
抽象类:
体现的是一种"isa"的关系,存在继承关系!(抽象类多态)。
接口:
体现的是一种"likea"的关系,由于接口的一种扩展功能。
14.形式参数和返回值问题
答:形式参数:基本数据类型,你要什么数据类型,在实际传参的时候就传什么数据类型;形式参数的改变对实际参数没有影响(String是引用类型和基本数据类型的效果一样String s ="abc")
如果形式参数是引用类型:
具体类:如果形式参数是一个具体类,那么需要创建该类对象
抽象类: 如果形式参数是抽象类的情况,那么需要自定义一个抽象类的子类,来进行实例化(创建对象),创建对象的实质:抽象类多态
接口: 如果形式参数是接口情况,那么需要自定义一个接口的子实现类,然后通过接口多态的形式给接口进行实例化(接口多态)
返回值:
返回值的结论:针对引用类型:
具体类:直接返回该类对象(通常实际开发中使用的是匿名对象)
抽象类:返回值如果是抽象类,需要的返回是该抽象类的子类对象
接口:返回值如果是接口类型,需要的是返回该接口的子实现类对象(通过子实现类进行实例化)
15.内部类的概述及访问特点
答:内部类:在一个类中定义另一个类
访问特点:
内部类是直接可以访问外部类的成员,包括私有。
外部类想要访问内部类的成员,必须通过创建内部类的对象访问该内部类的成员
16.内部类的分类
答:成员内部类:在外部类的成员位置
局部内部类:在外部类的局部位置定义的这个类
成员内部类:
在测试类中需要访问成员内部类中的成员的方法:
外部类名.内部类名 对象名 = 外部类对象.内部类对象;
局部内部类:
无论是局部内部类还是成员内部类(非静态的)都可以直接访问外部类的成员,包括私有。
17.匿名内部类的格式和应用及面试题
答:匿名内部类:
是内部类的简化版格式
前提条件:
必须存在一个接口或者是一个类(可以是具体类,也可以是一个抽象类)
书写的格式:
new 接口名或者类名(){
方法重写;
}
匿名内部类的实质:
继承了该类(抽象类)或者是实现了该接口的子类对象。
匿名内部类面试题:
按照要求,补齐代码
package day9;
interface Inter {
void show();
}
class Outer{ //补齐代码
public static Inter method(){ //返回值是一个接口
return new Inter(){
@Override
public void show() {
System.out.println("Helloworld!");
}
};
}
}
class OuterDemo {
public static void main(String[]args) {
Outer.method().show();
}
}
- Java homework4
- 人工智能homework4------遗传算法解决TSP
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- java
- java
- java
- java
- Java
- java
- java
- java
- 看人
- java项目JQ i18n国际化
- mysql单机多实例(一)
- 笨方法学习Python-习题35: 分支和函数
- C语言知识体系
- Java homework4
- Eclipse常用快捷键
- mxnet学习笔记-安装
- Java中的反射机制
- installExistingPackageAsUser方法的分析
- 学习区块链途径
- vptr的初始化语义学
- php正则表达式
- Linux常用命令之关机命令(halt poweroff shutdown)的区别