一抽象类-abstract、
父类方法不确定性的问题故将该方法设计为抽象类(没有实现的方法),但一般来说被子类继承然后实现
细节:
1、抽象类不可以被实例化
2、抽象类可以不包含抽象方法而且可以有实现的其他非抽象方法
3、abstract只能修饰类和方法
4、如果一个类继承了抽象类,则要实现抽象方法,除非自己也为抽象类
5、抽象方法不能使用private、final和static来修饰,因为抽象方法子类要进行重写
示例代码如下:
- public class Abstract01 {
- public static void main(String[] args){
- abstract2 a = new abstract2(200);
- a.hi();
- }
- }
-
- abstract class abstract1{
-
- private int a;
-
- abstract1(int a){
- this.a = a;
- }
-
- public abstract void hi();
-
- }
-
- class abstract2 extends abstract1{
- private int b;
- abstract2(int b){
- super(2);
- this.b = b;
- }
- public void hi(){
- System.out.println("hi");
- }
- }
复制代码
二象类最佳实践-模版设计模式、
需求:1)有多个类,完成不同的任务job
2)要求统计得到各自完成任务的时间
示例代码如下:
- public class Abstract01 {
- public static void main(String[] args){
- A a = new A();
- B b = new B();
- a.getTime();
- b.getTime();
- }
- }
-
- abstract class Stencil{
- public abstract void job();
- public String calTime(){
- long time = System.currentTimeMillis();
- job();
- long time2 = System.currentTimeMillis();
- return "执行时间为: "+(time2 - time);
- }
- }
-
-
- class A extends Stencil{
- public void job(){
- for (float i=0;i<1000000000;i++){
- i+=i;
- }
-
- }
-
- public void getTime(){
- System.out.println("A的工作"+calTime());
- }
- }
-
- class B extends Stencil{
- public void job(){
- for (long i=0;i<1000000000;i++){
- i*=i;
- }
- }
- public void getTime(){
- System.out.println("B的工作"+calTime());
- }
- }
复制代码
|