【幻化万千戏红尘】qianfengDay08-java基础学习:修饰符、重写、继承、抽象、递归、final
来源:互联网 发布:淘宝页头怎么设置 编辑:程序博客网 时间:2024/04/27 20:17
课程回顾:
方法的参数传递
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类
公共方法:
1、toString:将当前对象转换为字符串
public String toString()
2、equals:比较2个对象是否相同
public boolean equals(Object obj)
3、hashCode:获取对象的哈希值
public int hashCode();
哈希值:是java为每个对象设计的一个整型标记
练习:请创建一个类,属性若干,方法若干,要求重新toString方法,使得返回属性的值
final:关键字 最终的
1、修饰类:最终类
不能被继承
一般如果一个类不允许别人对其扩展,那么我们就将该类设计为final
2、修饰变量:最终变量--->常量
final修饰属性:要是声明的时候,必须赋值,且只能赋值一次
final修饰局部变量:可以先声明后赋值,也可以声明的时候完成赋值,但是只能赋值一次
3、修饰方法:最终方法--->不能被重写(覆盖)
如果在开发中,某个方法不想被重写,那么就可以使用final修饰
static和final的区别?
有一对兔子,兔子的生长期为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
- 【幻化万千戏红尘】qianfengDay08-java基础学习:修饰符、重写、继承、抽象、递归、final
- 【幻化万千戏红尘】qianfengDay09-java基础学习:接口,抽象类,抽象方法,多态,instanceof
- 【幻化万千戏红尘】qianfengDay01-java基础学习:历史、数据类型
- 【幻化万千戏红尘】qianfengDay02-java基础学习:运算符、进制转换
- 【幻化万千戏红尘】qianfengDay25-HTML基础学习:
- 【幻化万千戏红尘】qianfeng-Android-Day07-AsyncTask基础学习:
- 【幻化万千戏红尘】qianfeng-Android-Day08-基础学习:ListView
- 【幻化万千戏红尘】千峰培训Day01-java基础学习:历史、数据类型
- 【幻化万千戏红尘】qianfengDay03-java基础学习:for循环,switch,if
- 【幻化万千戏红尘】qianfengDay04-java基础学习:for语句.while语句,do-while语句
- 【幻化万千戏红尘】qianfengDay05-java基础学习:方法、return、重载
- 【幻化万千戏红尘】qianfengDay06-java基础学习:重载、方法、类、对象、构造方法
- 【幻化万千戏红尘】qianfengDay07-java基础学习:static、设计模式之单例模式
- 【幻化万千戏红尘】qianfengDay11-java基础学习:数组,排序,算法
- 【幻化万千戏红尘】qianfengDay12-java基础学习:二维数组、异常、错误
- 【幻化万千戏红尘】qianfengDay13-java基础学习:String ,StringBuilder,StringBuffer,Date,Calendar
- 【幻化万千戏红尘】qianfengDay14-java基础学习:集合,ArrayList,Iterator,LinkedList
- 【幻化万千戏红尘】qianfengDay15-java基础学习:List,ArrayList,LinkedList,comparable,comparator
- jQuery Mobile 列表内容
- socket是什么意思
- codeforces 670D2
- 安卓知识体系
- Android 仿联系人字母索引
- 【幻化万千戏红尘】qianfengDay08-java基础学习:修饰符、重写、继承、抽象、递归、final
- 求平均成绩 hd 2023
- IOS警告:Property access result unused - getters should not be used for side effects
- 字符串最后一个单词的长度
- 已知先序、中序求后序;已知中序、后序求先序(C++)
- Linux之守护进程
- iOS消息推送之远程推送
- LNMP环境安装教程
- 安卓中滑动事件的传递机制及dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent的调用