面向对象的三大特征:封装/多态/继承的讲解

本文详细介绍了面向对象编程的三大特性:封装、继承和多态。封装通过隐藏内部实现细节,提高了代码的安全性和复用性;继承使得子类能够继承父类的属性和方法,增强了代码的扩展性;多态则允许我们以统一的方式处理不同的对象,提高了程序的灵活性。同时,文中还讲解了super关键字的使用以及如何在实际编程中应用这些概念。
摘要由CSDN通过智能技术生成

面向对象的三大特征

封装

思想:将事物包装起来
优点:
    1.方便使用
    2.保护内部
    3.降低耦合度
封装的体现:
    变量:封装了一个值
    数组:封装了一组数据类型相同的值
    对象:封装多个属性的值与可以使用的方法
    类:封装着属性,方法,构造函数
    Java文件:封装着多个类
    方法:封装着一段代码
    ............
包:
    是什么?
        一个文件夹
    命名规则:
        全小写.
        com.公司名称缩写/项目名称缩写.Java文件的分类名
        eg:
            com.qf.service
        注意: . 表示下级文件夹
导包:
    为什么要导包:
        当前java文件中使用别的包下的java文件需要导包
    关键字:import
    注意:1.如果当前使用类  有当前包下的 也有其他包下的 而且类名相同  此时不建议导包
        2.导包时  *表示所有
    语法:
        import 包名.类名;
    书写位置:
        类上  包下
访问权限修饰符:
    作用:限定内容的使用范围
        public     当前项目中可用
        protect    在当前包下或继承关系中可用
        不写        当前包下可用
        private    当前类中使用
    建议:
        1.使用private修饰属性
        2.提供public修饰的get和set方法,用于对属性值的修改和获取

继承

生活中:
    晚辈继承长辈物质与精神
代码中:
    子类将拥有父类的所有属性与方法,构造函数除外
语法:
    访问权限修饰符 class 子类名 extends 父类名{
    
    }
优点:
    1.提高代码开发效率
    2.方便修改
    3.降低耦合度
注意:
    1.需要判断两个类是否有继承关系
    2.一个类只能拥有一个直接父类(单继承)
    3.一个类没有写出继承 那么默认继承object类
    4.子类可以拥有自己特有的属性和方法

super关键字

含义:谁调用super所在的方法,super就表示谁的父类对象
作用:
    1.当父类属性名/方法名与子类属性名/方法名相同,用于区分
        this.属性名/方法名(实参列表);或属性名/方法名(实参列表)           子类的属性或方法
        super.属性名/方法名(实参列表)  父类的属性或方法
    2.调用父类的属性或方法(this也可以调用)
    3.调用父类的构造函数
        super(实参列表);
        注意:
            1.必须在子类构造函数第一行
            2.如果子类构造函数中没有调用父类构造函数,系统会自动为其添加super(),调用父类无参构造
            如果父类没有无参构造,那么子类的构造函数将会报错

有继承关系时的创建情况

注意:子类对象的堆内存中有父类的属性与方法还有子类特有的属性与方法

多态

概念:一个事物拥有多种形态
事的多态:
    重载
        同一个类中
        方法名相同
        形参列表相同
    重写
        继承关系中
        子类方法与父类方法
        子类的访问权限修饰符不能小于父类
        返回值类型相同
        形参列表相同
        方法体不同

物的多态:
    1.子类可以自动转为父类 
    语法:
        父类名 对象名 = 子类
    注意:
        子类对象转换为父类对象,该父类对象不能调用子类特有的属性或方法,
        子类对象转换为父类对象,调用重写的方法,执行的是子类中的方法(因为重写方法后,父类方法被覆盖).
        子类对象转换为父类对象,调用未重写的方法,执行的是继承的父类方法
    2.父类对象转换为子类对象(强制转换)
    语法
        子类名 对象名 = (子类名) 父类名
    注意:
        父类对象转换成子类对象可能会出现ClassCastException(类型转换异常)
instanceof关键字
    作用:判断该对象是否属于该类
    语法:
        boolean 变量名 = 对象名 instanceof 类名;
        如果变量值为true 表示该对象是该类的对象 可以进行转换
        如果变量值为false 表示该对象不是该类的对象 不可以进行转换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值