• Java笔记03-Constructor & Override


    Java笔记03-Constructor & Override

    构造方法基本概念

    构造方法是类中的一种特殊方法

    它是在类创建对象(实例化)的时候自动调用的方法

    这个和python中的__init__初始化魔术方法类似

    可以在创建对象的时候进行参数的传递

    默认送您的构造

    一个类编译过后都需要有一个构造方法.如果程序中没有写的话

    编译器在编译时就会帮你加上一个无参数的空的构造方法(称之为"默认的构造方法")

    那要是你定义了构造方法了,编译器也不欠欠的帮你加了,它也懒

    关于构造的建议

    • 当类中有成员变量,并且还不是常量的时候,建议提供两个版本的构造方法,一个无参数的构造,一个全属性的构造

    • 而类中所有成员变量都是常量或者干脆就没有成员变量的时候,建议不要写构造

    成员方法重载

    说白了就是同样名称的方法,可以有很多不同参数列表的版本,有的有参数,有的没有参数,而方法名一样

    这样官方说能让类的设计变的更加优雅,我是没看出来

    好像是能够一个方法处理不同的数据

    这样的设计方式成为重载设计

    this关键字

    this就是代表对象本身(调用该方法的对象)
    就像JavaScript中的this
    就像python中的self

    OOP三大特性之封装

    封装的面向对象的三大特性之一,

    如果代码不做限制,则很多属性值是无效的

    封装就是保证属性值有效的技术

    封装的步骤

    1. 属性(不是常量的)必须使用private修饰,确保外部变量无法直接进行赋值操作

    2. 提供操作属性的方法,一般都是读写属性方法,get属性和set属性方法

    3. 构造方法中,也要通过调用set和get方法来操作

    static关键字

    静态static关键字修饰属性或者方法

    可以将对象层级从对象级升级成为类级别,在类加载的时候就可以调用准备好的属性或者方法

    换句话说就是static修饰的可以直接进行调用

    单例设计模式

    设计模式是形成标准化流程的经验总结,是特定问题的固定的解决方案

    单例设计思路:

    1. 先private构造,阻止外部去创建对象
    2. 本类提供一个对象,定义一个private static 的本类类型的属性  
    3. 对外提供get方法,将唯一的对象返回到外部  
    

    单例分为饿汉式和懒汉式两种写法

    java中单例模式是一种常见的设计模式,在实际开发中比较常用
    具体详细内容可以参考:Java设计模式之单例模式

    OOP三大特性之继承

    继承就是子类复用父类的代码

    使用关键字extends表示类和类之间的继承关系

    class Son extends Father{
        // ... 
    }
    

    Java中不能多继承,可以通过接口的多实现来弥补类的多继承

    继承中的构造方法

    子类必须通过super();关键字才能调用父类中的构造方法

    这样才能好好的初始化来自父类的成员变量

    this()super()必须出现在构造的第一行,因此不可能同时出现

    方法的重写

    • 有些父类写好的方法,子类它不太喜欢

    子类就可以使用方法重写(覆盖)来改变他爸爸给他的方法

    • 方法重写的原则:
    1. 相同的方法名称,相同的参数列表,相同的返回值类型或者返回子类
    2. 访问权限不能变小,可以变大
    3. 不能抛出更大的异常
    
    • 在子类重写的方法中,可以通过super关键字调用父类的"原始"方法.
    • static 方法重写之后还是static

    OOP三大特性之多态

    一母生九子,九子各不同

    Person p = new Student();
    
    1. 只能使用母类中定义的属性和方法
    2. 不能直接使用子类中扩展的属性和方法
    3. 如果子类重写了方法,静态方法调父类的,非静态方法调子类的
      原因:
      编译时,p被认为是Person类型;但在运行时是Student类型.在内存中其实是子类对象.

    总结:
    子即为多态

    多态特点

    多态时,如果想要把扩展的属性和方法调用出来,需要做类型转换

    父类子类需要做强制类型转换(向转型)
    子类父类需要做强制类型转换(向转型)

    对象强制类型转换是一种还原行为,必须内存中是该类型的对象才能成功

    instanceof运算符

    instanceof就是判断对象的类型,如果是该类型返回true,不是返回false

    语法格式:

    对象 instanceof 类型
    obj instanceof Object
    p instanceof Person
    

    严格的来说,在进行对象的向下转型之前,都得instanceof一下才能

    这个instanceof必须发生在父子之间才行哦!

    抽象类

    用abstract修饰的类,这个类吧就厉害了

    它不能实例化,这可咋用啊

    唉,对 就是用来继承的,你不能实例化你儿子行啊

    抽象方法所在类必须是抽象类,而子类如果不是抽象类,一定要重写父类中的抽象方法才行(实现父类的方法体)

  • 相关阅读:
    华为为什么再发布2016年就已经对外露脸甚至商用的欧拉操作系统。
    更安全,仅允许当前用户运行脚本法:vscode运行python时提示无法加载文件xxx.venvScriptsactivate.ps1
    ubuntu下安装odoo 14.0框架
    安利: Swagger工具, 一个REST APIs文档生成工具
    关注Brython 项目,在浏览器中运行python,部分替代javascript
    2021年最火的前端框架
    2021 最受欢迎的前端 八 个 UI 框架
    取代os.path的模块pathlib
    Java中Int转byte分析
    基于Java的时间转换:Date、Timestamp和String时间转化
  • 原文地址:https://www.cnblogs.com/victorfengming/p/11930929.html
Copyright © 2020-2023  润新知