3.11抽象类接口
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
抽象类接口
Final:
修饰三种方法:
变量:变量一旦初始化,他的值不可变,成为常量
方法:在子类中不能重写这个方法。父类中的方法是最终版本。
类:不能有子类
一般使用static final声明常量
常量:
命名规则
全大写,单词之间常用下划线隔开double MATH_V ALUE;
编译器和运行期都会进行优化
1.Byte a=2;
Byte a=3;
Baty c=a+b;//错
2.Baty c=2+3;//对
3. final Byte a=2;
final Byte a=3;
final Baty c=a+b;//对编译器自动优化
static final double p1=3.14;
//final成员没有必要变成实例变量在每个实例中都分配内存空间
//添加static关键词作为类的变量,在内存中只有唯一的地址。节省内存。
private int x;
private int y;
public point() {
super();
}
public point(int x, int y) {
super();
this.x = x;
this.y = y;
}
public double distance(){
// 使用自己的xy属性
return Math.sqrt(x*x+y*y);
}
public double distance(point p){
//是自己的属性和p的xy属性运算
int dx=x-p.x;
int dy=y-p.y;
return Math.sqrt(dx*dx+dy*dy);
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
public class text1 {
public static void main(String[] args) { text();
test2();
}
private static void test2() {
final point p1=new point(2,3);
p1.setX(20);
//p1变量的值不可变。
System.out.println(p1.getX());
}
private static void text() {
final int a=8;
//a=11;//final的值不可变
System.out.println(a);
final int b;
b=12;//第一次赋值,相当于初始化
System.out.println(b);
}
}
抽象类
半成品类,一张未完成的图纸。
* 抽象方法
* 没有方法体
* 添加abstract关键字。
含抽象方法的类必须是抽象类
抽象类不能创建实例
抽象类的作用
需要有子类来继承
位子类来提供通用代码
为子类提供方法的规约,要求子类必须实现抽象方法
练习:
猜数字游戏:
已经产生了一个不重复的四位数字
相同:
游戏流程
不同:
如何产生随机数
判断
结果
提示
接口:
极端的抽象类
程序结构设计工具
用于解耦合
用法
接入可替换的组件
接口隔离,解耦合
接口语法:
定义接口
Public interface A【】;
实现接口
Class xxxx implement A【】;
Class xxxx implement A,B,C【】;
Class xxxx extends Parent implement A【】;
接口之间继承
Public interface A extends B【】;
Public interface A extends B,C【】;
接口内部只能定义三样东西
1.抽象方法
可省略两个变量public static
2.常量
可省略三个变量public static final
3.内部类或内部方法。
================================================================== 作业:
复习:类对象,引用
成员变量
成员方法
构造方法
This两种用法(构造方法之间调用;调用成员)重载
访问控制符
继承extends instanceof
多态
抽象类
接口
预习: