WEEK4 JAVA 作业

1:教练和运动员案例(学生分析然后讲解)

乒乓球运动员和篮球运动员。

乒乓球教练和篮球教练。

为了出国交流,跟乒乓球相关的人员都需要学习英语。

请用所学知识:

分析,这个案例中有哪些抽象类,哪些接口,哪些具体类

抽象类 运动员 教练

接口:学习英语

具体类:乒乓球运动员和篮球运动员,乒乓球教练和篮球教练

 

2:final关键字可以干什么?有什么特点?

final:表示最终的,不可修改的(终态的)修饰类,该类不能继承

修饰成员方法,该方法不能被重写

final修饰局部变量:

基本数据类型:如果局部变量是一个基本数据类型,那么被final修饰,基本数据类型的变量的值不能再改变

引用数据类型:如果用final修饰引用类型的变量,那么它不能在重写分配堆内存空间,但是可以改变可以成员变量的值

 

3:final关键字的面试题?

A:修饰局部变量

B:初始化时机

final修饰局部变量:

基本数据类型:如果局部变量是一个基本数据类型,那么被final修饰,基本数据类型的变量的值不能再改变

引用数据类型:如果用final修饰引用类型的变量,那么它不能在重写分配堆内存空间,但是可以改变可以成员变量的值

 

4:多态是什么,前提是什么?

多态:一个事物在不同时刻体现出来的不同状态:

 对于多态的三个前提条件

 条件1:必须有继承关系(如果没有继承关系,谈不上多态!)

 条件2:必须有方法重写,子类出现了父类一样的 方法声明

 条件3:有父类引用指向子类对象:向上转型

 

5:多态中成员访问的特点?

 成员变量:编译看左边,运行看左边

 成员方法(非静态的成员方法):编译看左,运行看右;由于存在方法重写,所以就运行最终的就是子类的成员方法

静态成员方法:静态方法算不上方法重写,静态直接跟类有关系. 编译看左,运行看左

 构造方法:还是对象进行初始化,由于是一种继承关系,还是分层初始化

6:多态的好处及弊端?如何解决多态的弊端?

好处: 提高代码的维护性(由继承保证)

      提高代码的扩展性(由多态保证)

多态的弊端:是不能访问子类的特有功能

解决方案:

1 创建子类的具体对象,来访问自己的特有功能;虽然可以解决多态的弊端,但是从内存角度考虑,需要创建子类对象,那么必须在堆内存开辟空间,

2  子类的引用指向父类对象:

 向下转型:将父类的引用强制转换为子类的引用:前提必须有父类的引用存在向下转型必须

7:什么是向上转型?什么是向下转型?

向上转型:子类引用对象转换为父类类型称为向上转型,将子类对象转为父类对象,也可以是接口

向下转型:将父类的引用强制转换为子类的引用:前提必须有父类的引用存在向下转型必须依赖于向上转型

 

8:抽象类概述及其特点?

当一个类中如果有抽象功能(抽象方法)的时候,那么这个类一定要定义为抽象类

一个抽象类中可以有抽象方法,也可以有非抽象的

抽象类不能实例化:抽象类不能创建对象

 

9:抽象类成员特点?

抽象类的子类是抽象类,那么没有意义:最终使用的就是通过子类进行对象初始化的,如果子类都被抽象修饰了,那么也不能创建对象,所以没意义

 

10:抽象类的小问题

A:一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?

可以定位是抽象类,可以方便创建接口对象,去覆盖指定的功能

 

B:abstract不能和哪些关键字共存

public或者protected(这两个是可以使用的)

static

private

Final

 

11:接口的概述及其特点?

接口体现的是一种扩展功能

接口的特点:不能实例化(不能直接创建对象)

 

12:接口的成员特点?

 成员变量:只能是常量:存下默认修饰符:public static final  

构造方法:接口是没有构造方法的

 成员方法:接口中的成员方法默认修饰符:public abstract

 

13:抽象类和接口的区别?

1成员的区别:

成员变量:

抽象类:成员变量可以是常量,也可以是变量

接口:成员变量只能是一常量:存在默认修饰符:public static final

构造方法:

抽象类:可以有无参构造,有参构造方法

 作用:通过子类进行数据初始化(通过子类创建对象)

接口:没有构造方法的

成员方法的区别:

抽象类:可以有抽象方法,也可以有非抽象方法

接口:只能是抽象方法:存在默认修饰符:public abstract

 2 关系的区别:

类与类的关系:

继承关系:extends,java中只支持单继承,不支持多继承,但是可以多层继承!

类与接口的关系:

实现关系:implements,并且,一个类在继承另一个类的同时,可以实现多个接口

(class 子实现类名  enxtends Object implements 接口名1,接口名2...)

接口与接口的关系

 继承关系:extends,可以支持单继承,也可以多继承!

 3设计理念的区别:

抽象类:

体现的是一种"is a"的关系,存在继承关系!(抽象类多态)

接口:

体现的是一种"like a"的关系,由于接口的一种扩展功能

 

 

`

DAY9作业

2:形式参数和返回值问题

如果形式参数是引用类型:

具体类类:如果形式参数是一个具体类,那么需要创建该类对象

抽象类:如果形式参数是抽象类的情况,那么需要自定义一个抽象类的子类,来进行实例化(创建对象)创建对象的实质:抽象类多态

返回值类型

具体类:直接返回该类对象(通常实际开发中使用的是匿名对象)

抽象类:返回值如果是抽象类,需要的返回是该抽象类的子类对象

 

3:内部类的概述及访问特点

 在一个类中定义另一个类,那么把这种情况:内部类:

内部类是直接可以访问外部类的成员,包括私有

外部类想要访问内部类的成员,必须通过创建内部类的对象访问该内部类的成员

 

4:内部类的分类

成员内部类:在外部类的成员位置

局部内部类:在外部了的局部位置定义的这个类

 

5:匿名内部类的格式和应用及面试题

匿名内部类:是内部类的简化版格式

 前提条件:必须存在一个接口或者是一个类(可以是具体类,也可以是一个抽象类)

 书写的格式:

 new 接口名或者类名(){

 方法重写;

 }

匿名内部类的实质:

 继承了该类(抽象类)或者是实现了该接口的子类对象

 

 匿名内部类面试题:

按照要求,补齐代码

interface Inter { void show(); }

class Outer { //补齐代码 }

class OuterDemo {

public static void main(String[] args) {

  Outer.method().show();

  }

}

要求在控制台输出HelloWorld

补齐内容:

public static Inter method(){

return new Inter(){

public void show() {

System.out.println("helloworld");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值