java学习之路————第十二天

今天我们接触到final关键字,抽象类和抽象方法,递归算法以及接口

一、final关键字

1.final修饰类,该类不能被继承   如:String

2.final修饰方法,该方法不能被重写

3.final修饰变量,该变量为常量。往往和static一起,因为可以直接通过类名.变量名访问。

       备注:常量名全部用大写字母表示。

final修饰变量有两种初始化方式:

a.直接初始化

b.通过构造方法初始化

例:    public class Demo{

                   final static int a = 100;                 

                 main(){

             Demo d = new Demo();

              syso(d.a);

                }

}

二、抽象类和抽象方法

    由来:因为类继承,大都要重写父类中的成员方法,导致父类中的成员方法对我们来说意义不大,还占用资源。此时有没有一种方式来解决这个问题。此时抽象类和抽象方法上场。具体的实现内容由子类继承时去重写抽象方法即可。

     抽象类和抽象方法用关键字abstract表示

     抽象方法:只有方法名没有方法体的方法称为抽象方法

             语法:权限修饰符  abstract  返回值类型   方法名();

     抽象类:有抽象方法的类一定是抽象类

子类继承抽象类的时候注意事项:

1.子类是普通类,必须重写父类中的抽象方法

2.子类也是抽象类的话,可以不重写父类的抽象方法

3.抽象类不能new

               为什么需要抽象类抽象方法?

     将多个类中共同的行为封装在一起,不需要写具体的实现代码,由各个类去继承这个封装好的类,然后自行实现想要的结果。

三、递归算法

         一句话概括:自己调自己

  古典问题:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,加入兔子都不死,问每个月的兔子总数是多少?

程序分析:兔子的规律为数列:1,1,2,3,5,8,13,21.。。。。

代码:

          int sum = 0;

   public int number(int month){

    if(month==1||month==2){

     return sum = 1;

}

    return sum=number(month-1)+number(month-2);

}

四、接口

接口是一个特殊的抽象类。

1.接口中的不能声明变量,只能声明常量

2.接口中的所有方法都是抽象方法

3.接口不能new

4.没有构造方法

5.接口可以多继承  接口与接口之间用逗号隔开

6.接口可以多实现   接口与接口之间用逗号隔开

   用关键字interface来表示接口。

如何实现接口?用关键字implements去实现。

实现接口,必须重写里面的所有抽象方法

案例: 老师和学生

分析:

      老师类:姓名   年龄    吃饭     睡觉

      学生类:姓名    年龄    吃饭     睡觉

从具体类到抽象类:

       将具有共性的功能封装在抽象类中    父类  Person类

额外的抽烟功能,不是所有的老师或同学都抽,不具体共性。

此时可以将该功能封装在一个接口中,哪个老师或学生抽烟,直接去实现该接口即可

猜你喜欢

转载自blog.csdn.net/mataodehtml/article/details/83547281