Java学习_Day012

本文详细概述了面向对象编程的核心概念,包括类与对象的设计原则、封装的实践应用、继承的机制与重写、抽象类与接口的区别,以及多态的实现。从类的创建到对象生命周期,再到封装和继承的深入理解,适合初学者和进阶者参考。
摘要由CSDN通过智能技术生成

面向对象所有内容总结

1. 类与对象
 1.1 面向对象的思想
 1.2 面向对象的过程
 1.3 类与对象
 1.4 构造方法
 1.5 构造方法的重载
 1.6 匿名对象
 1.7 生命周期
2. 封装
 2.1 包
 2.2 封装
 2.3 this
3.继承
 3.1 继承
 3.2 Object
 3.3 方法重写
 3.4 访问权限修饰符
 3.5 super
 3.6 toString
 3.7 equals
3.8 抽象类与抽象方法
4. 多态
 4.1 接口
 4.2 多态
5. 查漏补缺
 5.1 static
 5.2 final
 5.3 内部类
 5.4 匿名内部类
 5.5 代码块
 5.6 全局常量
 5.7 枚举


1. 类与对象
1.1 面向对象的思想

万事万物皆对象

1.2 面向对象的过程

面向过程: 在意的是一个个的过程
面向对象: 在意的是一个个对象的结果

1.3 类与对象

类: 是一个模板,有各个维度(类是对象的抽象)
对象: 是通过各个维度来具体描述一件事物(对象是类的具体)

1.4 构造方法
作用: 1. 创建对象             2. 初始化对象
创建规范:
            1. 必须与类名一致
            2. 没有返回值
            3. 可以使用 return 但没有意义
            4. 不能使用 static 修饰
            
    注意:每个类默认隐式存在一个无参构造,如果显示创建了构造方法,那么隐式的失效
1.5 构造方法的重载

1. 方法名相同,参数列表不同
2. 方法签名(个数,顺序,类型)

1.6 匿名对象

定义: 没有名字的对象,只能使用一次

1.7 生命周期
概念: 对象的生命周期

开始:  调用构造方法,创建对象的时候开始

结束: 失去引用,被垃圾回收机制回收的时候结束
2. 封装
 2.1 包
概念: 就是文件夹,用来区分文件

规范:1. 域名倒写    2. 项目名     3. 模快名
例:cn.这里写域名.oa.test
test -----> 测试          domain-----> 业务

注意:包名全部小写
           java.lang包下的类无需导包
           可以使用通配符 * 表示任意个数
           不能导入相同类名的路径
           
 导包: 
        关键字: import  包名.对象名
 全限定名:解决了什么问题----->在一个类中不能导入两个类名相同的包
 
 包名.类名  对象名 = new  包名.类名();
 2.2 封装

概念: 提高安全性,通过 get 与 set 来操作属性

Javabean的规范(封装步骤):
            1. 将属性私有化
            2. 给每个属性提供 get 与 set 方法
                    boolean类型的 get 改为 is
                    set 与 get 后面的属性名字首字母大写
            3. 必须存在一个无参构造方法
 2.3 this
this : 表示当前对象地址值

作用:
            1. 解决成员变量与局部变量之间的二义性
            2. 调用构造方法
            3. 可以当做参数传递
            4. 可以当做返回值返回
            5. 可以调用普通方法
3.继承
 3.1 继承
继承的概念: 将相同的属性或者行为抽离出来,创建一个新类,这个类称之为 父类

    继承关键字: extends
    可以继承那些: 成员变量    方法    静态方法
特点:
        1. 单继承
        2. 多重继承
   每个类默认隐式继承Object类,如果显示继承了其他类,那么不再继承Object类
   
   执行方式:
   在子类中找---->父类中找---->Object中找
   (如果Object中也没有则程序会报错)

 3.2 Object

所有类的父类

 3.3 方法重写
    什么情况下重写:
        父类中的方法不能满足子类需求的时候,此时可以重写父类的方法
        
        注意:
                1. 方法名和参数列表要一致
                2. 子类的访问权限修饰符 大于等于 父类
                3. 父类的返回类型 大于等于 子类
                    (基本数据类型保持一致)
 3.4 访问权限修饰符

public ----> protected ----> 默认 ----> private

 3.5 super
表示父类地址值
            1. 子类的构造方法中调用父类的构造方法
            2. 子类中调用父类的方法
 3.6 toString
为什么要重写?
            因为调用的是 Object 的 toString 方法为地址值,我们的需求是显示所有属性的值,所以需要重写方法。
 3.7 equals
为什么要重写?
            因为调用的是 Object 的 toString 方法为地址值,我们的需求是比较对象属性值是否相等
3.8 抽象类与抽象方法
抽象类:
        本质上还是一个类,可以当做模板使用
        
 抽象类中可以存在:成员变量      方法      静态方法        构造方法        抽象方法
 抽象方法: 只有方法的声明,没有具体的实现代码
 
 注意:抽象方法只能存在抽象类中(目前)
4. 多态
 4.1 接口
概念: 类似类的结构,是一种规范,没有具体的实现
好处: 便捷,安全,拓展,重要
命名规范:
            接口名: 前面加 I
            实现类: 后面加 impl
接口中可以存在: 成员变量(全局常量必须赋值)     抽象方法        静态方法

创建方式:
            1. 直接创建
            2. 将 class 改为 interface
            
接口的关系(特点):
    接口与类:
                1. 可以同时继承与实现
                2. 可以同时实现多个接口
    接口与接口:
                1. 多继承
                2. 多重继承
                
  抽象类与接口的关系
                相同点:都有抽象方法
                不同点:
                    抽象类:
                            本质上还是一个类,可以当模板使用
                            存在:成员变量,方法,静态方法,抽象方法,构造方法
                     接口:
                              与类相似的结构,是一种规范,没有具体的实现
                              存在:成员变量,静态方法,抽象方法
 4.2 多态
概念: 一种事物(父类/接口),多种形态(子类/实现类),屏蔽子类差异化

屏蔽差异化解决方式:
                1. instanceof : 判断左边是否为右边的对象
                2. 字节码 : 对象名.getClass();    类名.Class
    语法:
            父类  对象名 = new  子类();
            接口   接口名 = new  实现类();
            
接口为什么不能实现接口?
                    因为接口里的方法是抽象方法,不能存在普通方法,所以无法具体的代码实现
5. 查漏补缺
 5.1 static
表示: 静态的 , 会被 JVM 优先加载
修饰: 成员变量, 方法, 内部类
注意:会被所有实例所共享
 5.2 final
表示:  最终的, 不能改变与拓展

修饰:
外部类: 不能继承
方法:    不能重写
成员变量: 必须赋值,不能改变
内部类:  不做研究
局部变量: 可以不赋值, 但是只能一次赋值
 5.3 内部类
定义: 写在类中的类

会不会创建字节码文件?
        会    字节码文件名: 类名$数字.class
 5.4 匿名内部类
概念: 没有名字的内部类,只能使用一次

为什么要用?------->可以少创建类

什么情况可以使用匿名内部类?
需要方法重写的情况下都可以使用
 5.5 代码块
    1. 普通代码块 : 写在方法或者结构体中
    2. 构造代码块 : 写在类中
    3. 静态代码块 : 写在类中,被 static 修饰,会优先加载,会执行一次
 5.6 全局常量
创建方式:
            1. 普通类中     public  static  final  数据类型  常量名 = 值;
            2. 接口中
            3. 枚举
            
  注意: 常量名全大写          
 5.7 枚举
概念: 与类相似的结构

可以存在: 成员变量,静态方法,全局常量,构造方法
枚举默认隐式继承: Enum
重写 toString 来显示通过构造方法传递的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值