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

课程回顾:

方法的参数传递

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

原文地址:https://www.cnblogs.com/weigongcheng/p/5689721.html