• 【幻化万千戏红尘】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

  • 相关阅读:
    Bootstrap3.0学习第八轮
    内存管理相关的信息
    SVN merge
    Asp.Net MVC 3
    formValidator
    jquery 分页控件2
    从零开始学C++之STL(四):算法简介、7种算法分类
    (Java实现) 过河卒
    (Java实现) N皇后问题
    (Java实现) N皇后问题
  • 原文地址:https://www.cnblogs.com/weigongcheng/p/5689721.html
Copyright © 2020-2023  润新知