【幻化万千戏红尘】qianfengDay08-java基础学习:修饰符、重写、继承、抽象、递归、final

时间:2022-05-20 10:26:19

课程回顾:

 

方法的参数传递

 

static:

1、修饰属性

属于类的属性

2、修饰方法

3、修饰代码块

 

 

 

继承:

一个类可以拥有另一个类的信息

属性和方法都可以被继承

 

extends

 

单继承

 

super:

1、调用父类的属性和方法

2、调用父类构造方法

格式:super([实际参数列表]);

 

 

 

今日内容:

 

访问修饰符:控制访问权限的

public:公共的,项目中都可使用

protected:受保护的,当前类,包,并且还有子类中

default/package:没有访问修饰符的状态,当前类和包中

private:私有的,只能在当前类中使用

从严格到宽松:

private--->default--->protected---->public

 

修饰类:

public/default

修饰方法和属性:都可以修饰

 

重写:覆盖

发生在子类中

就是说子类可以对父类的方法进行功能的扩展

什么时候重写?

父类的方法满足不了子类的需求,所以才进行重写

 

重写规则:

1、除了访问修饰符,其他的都一样(静态/非静态、返回值类型、方法名、形式参数列表)

2、访问修饰符不能比父类的更严格

 

重写和重载的区别?

重载:

相似功能的方法采用同一方法名

同一类中

方法名相同

形式参数列表不同

 

重写:Override

子类对父类方法的扩展

子类中

访问修饰符不能比父类的更严格

静态/非静态、返回值类型、方法名、形式参数列表必须要相同

 

 

虚方法:可以被重写的方法,我们就叫虚方法

 

Object类:所有的类的父类

如果一个类没有继承另外的类,那么会默认继承Object

 

公共方法:

1toString:将当前对象转换为字符串

public String toString()

2equals:比较2个对象是否相同

public boolean equals(Object obj)

3hashCode:获取对象的哈希值

public int hashCode();

 

 

哈希值:是java为每个对象设计的一个整型标记

 

 

练习:请创建一个类,属性若干,方法若干,要求重新toString方法,使得返回属性的值

 

final:关键字 最终的

1、修饰类:最终类

不能被继承

一般如果一个类不允许别人对其扩展,那么我们就将该类设计为final

 

2、修饰变量:最终变量--->常量

final修饰属性:要是声明的时候,必须赋值,且只能赋值一次

final修饰局部变量:可以先声明后赋值,也可以声明的时候完成赋值,但是只能赋值一次

 

3、修饰方法:最终方法--->不能被重写(覆盖)

如果在开发中,某个方法不想被重写,那么就可以使用final修饰

 

staticfinal的区别?

 

 

有一对兔子,兔子的生长期为2个月,就可以生兔子了,以后每月1对,问8个月之后又多少对兔子?

1 1 2 3 5 8

问第8个数字为多少?

 

1 1 2 3 5 8 13 ……

问第13个数字为多少?

n<3:1

M(n-1)+M(n-2)

 

 

递归:方法内部出现了自己调用自己的现象

 

优点:精简代码

缺点:效率低

 

2大核心:

1、递归出口

2、向出口靠近

递归方法:要求必须得有条件不在自己调用自己(递归出口)

 

在使用递归的时候,应该积极避免死递归的出现(就是没有出口的递归)

练习:使用递归完成某个数的阶乘

 

 

abstract:关键字 抽象的

用法:

1、修饰类:抽象类

格式:[修饰符] abstract class类名{

 

}

抽象类不能被实例化

可以拥有属性、方法、构造方法

 

抽象的实例化:

1、子类

2、匿名内部类

 

2、修饰方法:抽象方法

格式:[修饰符] abstract返回值类型 方法名([形式参数列表]);

抽象方法只有方法的声明,没有方法的实现

 

有抽象方法的类一定是抽象类,抽象类不一定有抽象方法

 

 

 

 

class:创建类

this:

super:

static:

public

private

protected

final

abstract

import

package

extends

new