20170814 - 今日技能封装 - A

1 为何在主类中调用方法时,同一文件下的类必须用static修饰?
主类由static修饰

2 垃圾管理机制是?
垃圾回收机制是Java提供的自动释放内存空间的机制。
垃圾回收器(Garbage Collection,GC)是JVM自带的一个线程,用于回收没有被引用的对象。

3 同时使用不同包中相同类名的类,包名不能省略?
正确
import a.Aoo
import b.Aoo

class test{
a.Aoo o = ...
b.Aoo o = ...
}

http://pdf7.tarena.com.cn/tts8_source/ttsPage/JAVA/JSD_N_V06/OOP/DAY04/EXERCISE/01/index.html
4,5

4 final
修饰方法,方法不可重写
①一般用于防止不小心的重写(re,在父类中已定义了开火方法,结果在子类中定义了另外一个不同含义开火的方法)
修饰类,累不可继承(但可继承别人)
修饰变量,变量不可改变
①修饰成员变量,只能在初始化时赋值或构造方法中构造
②修饰局部变量,在在使用前初始化即可

5 继承要符合什么原则?
is a(是一个)

6 static final
static final修饰变量时应如何赋值?
只能初始化时赋值。
如何命名?
大写_大写

7 public static final double pi = 3.14159

8 静态变量A与常量A在实际调用时的区别是?
静态变量
需在方法区加载类,再从类中调用

常量
无需加载类文件(编译),直接替换成具体的值,所以效率更高

9 抽象方法用于什么情况?如何定义
只要方法体无法确切表示(适用于多个子类的area方法)
在方法前加 abstract

10 何时需要定义抽象类?
包含抽象方法的类

11 抽象方法及抽象类完整吗?可以用于实例化吗?
不完整,所以不可以用于实例化。

12 抽象的核心性质是?抽象类的核心是?何时需要定义抽象方法?
不完整的,无法实例化。
抽象方法
子类共有的行为且该行为实现流程不同(如图形(父类)计算面积。)

13 子类继承父抽象类,如不重写抽象方法会怎样?
编译错误,除非定义子类也为抽象类。

16 不包含抽象方法的类,也可以被声明为抽象类吗?
只是没有意义。

17 何时需要用到抽象类?
抽象类讨论的是是否要在父类中定义一个子类共有的但行为不同的方法
当需要将不同的子类对象们用以共同讨论时,如比较新建对象们的大小。

18 给一堆已知周长的图形,求其中面积最大是哪个图形?
public class ShapeTest2 {

public static void main(String[] args) {
//先建一个父类,用以抽象继承
//再建两个子类
//最后再建比较的函数
//主类
Shape[] shapes = new Shape[4];
shapes[0] = new Circle(1);
shapes[1] = new Circle(2);
shapes[2] = new Square(1);
shapes[3] = new Square(2);
compete(shapes);

}

public static void compete(Shape[] shapes){
//按照比大小惯例,假设第一个为最大
double max = shapes[0].area();
int maxIndex = 0;
for(int i = 0;i < shapes.length;i++){
if(shapes[i].area() > max){
max = shapes[i].area();
maxIndex = i;
}
}
System.out.println("最大值为"+max+"下标为"+maxIndex);
}

}

abstract class Shape{
protected double c;
abstract public double area();
//为什么要建立抽象方法→对比不建立抽象方法,仅
}

class Circle extends Shape{
Circle(double c){
this.c = c;
}

public double area(){
return c*c*0.796;
}
}

class Square extends Shape{
Square(double c){
this.c = c;
}
public double area(){
return c*c*0.696;
}
}
为什么要建立抽象方法
→对比不建立抽象方法,需要建立子类对象从中调用,各自生成,再各自比较。
→建立抽象方法,仅需建立相同的子赋父的父类对象,就能通过访问父类方法来获取面积值,
在一个方法中传入大图形对象比较

比较函数也很好地体现了面向对象思想——只要传入一个大对象,
就能获取其中每一个对象(图形)的属性并比较

该题复盘,反思不足处
1 建立父类,赋值周长c没有加protected修饰
2 建立子类的构造,好一会才想到是要建立传参的构造→思路不晰
---
1 建立图形抽象类时,用了public修饰,一个文件内只有主类才可用public修饰。
2 定义图形抽象类没有加 abstract 和 括号——public double area;(public abstract double area();)
3 重写子类方法时,double area()(public double area())
4 主类中调用area方法时,没有加括号——调用属性无需加括号,调用方法加括号。

19 什么是接口?
是标准,规范——是制定方
也是一种数据类型。

20 如何定义接口类?
interface xx

21 接口类内变量为?方法为?
常量,抽象方法。

22 接口可以实例化?
可以声明,可以造型,不能实例

23 接口类需要被?
实现。实现注意:重写接口内方法,必须加public(接口内所有东西默认为public)

24 一个类可以实现多个接口吗?
可以。

25 接口如何被实现?
class Aoo implements Inter1,Inter2

26 如同时继承与实现,先后顺序是?
先extends再implements

27 重写方法时应注意什么?
public

28 接口与接口间可以互相继承吗?
可以

29 类和类间可以被?接口和接口呢?接口和类呢?

继承,继承,实现

30 接口是完全抽象的抽象类吗?

31 思考把握整体着做题
“实现,需要在方法前加public”

32 接口实现类的命名方式?
ICBCImpl

33 调用函数可否在return后?
不可,会提示编译错误

34 提示需实现要实现的类,有可能是什么原因?
①有方法漏重写
②方法重写列表参数不同

35 银行卡类内的数据可以private吗?
不可以,因为银行卡类还要在主类中进行操作。

 

为什么要建立抽象方法
→对比不建立抽象方法,需要建立子类对象从中调用,各自生成,再各自比较。
→建立抽象方法,仅需建立相同的子赋父的父类对象,就能通过访问父类方法来获取面积值,
在一个方法中传入大图形对象比较

比较函数也很好地体现了面向对象思想——只要传入一个大对象,
就能获取其中每一个对象(图形)的属性并比较

该题复盘,反思不足处
1 建立父类,赋值周长c没有加protected修饰
2 建立子类的构造,好一会才想到是要建立传参的构造→思路不晰
---
1 建立图形抽象类时,用了public修饰,一个文件内只有主类才可用public修饰。
2 定义图形抽象类没有加 abstract 和 括号——public double area;(public abstract double area();)
3 重写子类方法时,double area()(public double area())
4 主类中调用area方法时,没有加括号——调用属性无需加括号,调用方法加括号。


个人反省
1 快速反应能力→
①每日问题中的概念理解,辅以案例,有一个在实际中应用时模样的印象。
②把握本质:快速把握数据结构,判断正在做什么
2 结合着思考有些卡顿,如设计案例验证static修饰的方法不可重写

 

posted @ 2017-08-14 23:10  清及  阅读(102)  评论(0编辑  收藏  举报