Java 设计方法(更新)

面向过程----------->à面向对象的开发 ----->à 面向接口的开发
C 语言(驱动)           Java/.net            Java 或高级
单片机                  软件(分工协作)      项目管理/框架
                          封装                   接口文档
                          继承                接口中方法(固定)
                          多态                   只有属性
                                                 裁判类
                                                对于工具类,算法类
                                               不需要实例化
                                                 Math.random()
面向接口开发的流程
(1)定义接口,接口定义方法名,不需要实现,所有的开发人员
必须实现接口进行开发,
继承是单继承,串联式达到多继承
接口(开发哪个模块),多继承
不实现的方法,只要限制方法名,不需要写代码体
(2)如果有些方法你不确定如何实现, java 提供了一个关键字,
abstract,抽象,如果方法没有实现,把方法定义成抽象方法
有抽象方法就是抽象类,类也由 abstract 来修饰,如果类是抽
象类不能被实例化,类中方法不能被调用。
修改你功能的人继承类,super 取父类的代码,对你代码进行

优化。
(3)对于算法类或者工具类,没有必要实例化,把类加上 static
相当静态类,静态类不需要实例化,直接使用类名.方法来访问。
静态的特点,保证运算速度,在内存上最先执行的。
(4)再根据面向对象的设计方法进行封装继承多态的考虑
(5)实际执行的每个方法中的代码还是面向过程。
过程:面向接口开发的模式来改写剪刀石头布
Judge 类做工具类
1、 先建立接口,接口只有方法
把 Joiner 建立接口
在项目文件夹 src 上右键,然后 new 一个 class
在出现的对话框中选择“ interface” 接口。

为这个接口 interface 起个名字
public interface Joiner {
}
注意:类的关键字是 class,接口的关键字是 interface
在这个接口类中只定义方法,不需要实现。
public interface Joiner {
//
只定义方法,不需要实现
public void choice();
public void name_settings();
}
接口限定方法名称
后面的开发者实现这个接口 implements
实现接口后报错,报错原因这里有方法没有实现
然后右键选择 Generate....

在弹出的菜单中选择 implements methods 实现方法。
接下来弹出的对话框中罗列出对应的实现方法。


接 ok 即可。
这里产生两个方法
public class Player implements Joiner{
@Override
public void choice() {
}
@Override
public void name_settings() {
}
}
有些方法知道如何去做,有些方法不知道如何去做,choice 不知道怎么写,
name_settings 初始值会写。这个类就典型抽象类
在抽象类中封装还是正常的。
注意:只要有没有实现的方法,就是 abstract 抽象方法,只要有 abstract 抽
象方法的类,就是 abstract 抽象类.
抽象类是可以没有抽象方法的.

抽象类不能被实例化. 实例化会报错.
注意:
实现接口可以多实现 implements A,B,C
接口间的继承是多继承 extends A,B,C
Judge 类设置成工具类,把方法定义成 static
总结:修改的重点几个地方
(1) 建立接口 interface 关键字

(2) 父类建立一个抽象类,抽象方法就不实现象,抽象的关键字是 abstract
建立的抽象类也按封装的步骤:
a) 产生无参/有参
b) 产生 getter/setter
c) 产生 toString()重写
(3) 后面开发类继承抽象类,实现相关的方法
(4) 最后算法类或者工具类设计成类中的静态方法,静态的关键字是
static
(5) 主程序 main 函数中调用方法
看字节码
——————————用代码来说明一下 static 是先执行的-----------
定义一个 A 类
静态块和非静态块,还有构造函数
定义一个 B 类,
静态块和非静态块,还有构造函数
在主函数中实例化 B 类
这里把 static 修饰的内容中的子类和父类全部取出来,先取父类,后取子类.
后面的输出没有静态块的事情,后面的 new 不执行静态块,静态块常驻内存,只
有对象第一次实例化才执行.
找到静态块后,先执行父类的非静态块和构造函数.再执行 B 类的非静态块的代
码和构造函数.
第二次实例化时,先执行父类的非静态块和构造函数,再执行子类的非静态块和
构造函数.
总结执行有代码块的执行顺序
(1) 父类与子类所有类的静态代码块
(2) 父类的非静态代码块
(3) 父类的构造函数
(4) 子类的非静成代码块
(5) 子类的构造函数
(6) 同类方法先父类后子类
(7) 初始化和实例化
如果有一个抽象类
父类是否抽象,并不能改变整个实例化的过程,如果父类是抽象类,子类在实例
化的过程, 一样执行父类的实例化.
注意:抽象类不能被代码实例化, new 抽象类报错,但是抽象类可以在子类实
例化过程中被动实例化父类的抽象类.
static 修饰的方法可以用类名.方法名来引用
static 修饰的变量,也是一样可以直接用方法名.变量来获取
实例方法中可以存在静态变量,在操作上允许,但是开发中不允许,方法中静态,
就把实例方法变在静态方法.

改写拍 24 表达式( 面向对象到面向接口)
增加人机之间对机
机器
While(true){
If (Math.random()*100000>80000){
break;
}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值