JavaSE之面向对象

本文详细介绍了Java中的面向对象编程,包括面向对象的思想、类与对象、内存分析、构造方法、方法重载、封装、继承、多态等核心概念。深入探讨了对象的创建、静态成员、代码块、包管理、main方法、单例设计模式以及面向对象的高级特性,如抽象类、接口和多态的使用。
摘要由CSDN通过智能技术生成

目录

1. 面向对象初级

1.1 面向对象思想

1.2 类与对象

1.3 创建对象内存分析

1.4 构造方法

1.5 方法重载

1.6 构造方法的重载

1.7 匿名对象

2. 面向对象进阶

2.1 private(封装)

2.2 this

2.3 static(静态的)

2.4 代码块

2.5 包

2.6 main方法详解

2.7 单例设计模式

3. 面向对象高级

3.1 抽象类

3.2 接口

3.3 多态

3.4 instanceof

3.5 Object类

3.6 内部类

3.7 包装类

3.8可变参数

3.9递归


1. 面向对象初级

1.1 面向对象思想

        是计算机编程技术发展到一定程度的产物,是相对于面向过程来讲的,面向过程到面向对象是程序员思想上从执行者到指挥者的转变。
        在Java中万物皆对象。

            三大思想
                OOA:面向对象分析
                OOD:面向对象设计
                OOP:面向对象程序
            三大特性
                封装性:所有的内容对外部不可见
                继承性:将其他功能继承下来继续发展
                多态性:方法的重载本身就是一种多台的体现

1.2 类与对象

        类是一个共性的产物,是一个综合的特征,对象是一个个性的产物是一个个体的特征,类似于图纸与实物的概念
        类必须通过对象去使用,对象的所有操作都在类中定义
        格式:class 类名称{ 
                    成员属性             
                    成员方法                           
                }
            属性和方法
                属性格式:数据类型 属性名
                属性定义并赋值格式:数据类型 属性名 = 初始化值
                方法定义格式
                    权限修饰符 返回值类型    方法名(形式参数列表){          
                                   //方法体                                          
                                   return 返回值;                           
                                  }
            对象创建与使用
                对象定义格式:类名称 对象名称 = new类名称()
                访问类中的属性:对象.属性;
                访问类中的方法:对象.方法(实际参数列表);

1.3 创建对象内存分析

             :存取速度快,先进后出
                存储的是:基本数据类型和引用数据类型的引用
             :存放类的对象
                所有类的对象new一个新对象的时候就会开辟一块新的堆内存
            方法区(存放)
                类信息
                静态变量
                常量
                成员方法
                常量池(用static修饰)
            PC寄存器
                保存的是当前正在执行JVM指令的地址
                每个线程启动时,就会创建一个PC寄存器
            本地方法栈
                保存本地方法(native)的地址

1.4 构造方法

            作用:用于初始化对象
                在对象创建时自动调用,所有的java类中至少存在一个构造方法
            定义格式
                方法名与类名相同,没有返回值类型的声明
            构造方法设计
                无参构造方法建议自定义
                类中都是非常量,0议定义一个全参构造方法一个无参构造方法,其余的使用到再加
                类中都是常量无变量时,建议不写

1.5 方法重载

           方法名称相同,参数类型或参数长度不同
           与返回值无关

1.6 构造方法的重载

         参数列表的长度或类型不同

1.7 匿名对象

        没有对象名称的对象
        只能使用一次,任何被GC当做垃圾回收

2. 面向对象进阶

2.1 private(封装)

        在开发中为了避免逻辑错误,建议对属性进行封装,提供get和set方法进行取得和设置操作

2.2 this

        调用类中的属性
       调用类中的方法或者构造方法(在一个构造方法中调用另一个构造方法是,调用的代码,必须编写在构造方法的第一行)
       表示当前对象

2.3 static(静态的)

        用来修饰成员变量和成员方法
        被static修饰的方法或变量不会因为对象的多次创建而产生多份数据
        静态成员 在类加载时加载并初始化
        在访问时:静态资源不能访问非静态资源,非静态资源可以访问静态资源

2.4 代码块

        普通代码块
                在执行流程中 出现的代码块
        构造代码块
                在类中的成员代码块,就是构造代码块,在每此对象创建时执行,执行在构造方法之前
        静态代码块
                用static修饰的成员代码块,在类加载时执行,程序从启动到关闭,只会执行一次的代码块

2.5 包

        介绍:
                把功能相似或相关的类或接口放在同一包中,方便类的查找和使用
                包和文件夹一样,不同的包的类名可以相同,包可以避免名字冲突
                包也限定了访问权限,拥有包的访问权限的类才能访问包中的类
       通常由多个单词组成, 所有单词的字母小写, 单词与单词之间使用.隔开 ,一般命名为“com.公司名.项目名.模块名....”
        import关键字用来做导包操作

2.6 main方法详解

        public:表示公有的,可以被所有操作所调用
        static:静态的,可以由类名直接调用
        void:没有返回值的
        main:系统规定好的方法名称
        String[] args:字符串数组,接收参数

2.7 单例设计模式

        保证一个类只有一个实例,实现方法:构造方法私有化
        必须要自己创建这个实例,实现方法:在本类中维护一个本类对象(私有,静态)
        必须向整个程序提供整个实例,实现方法:提供公共的访问方式(getInstance方法,静态)

3. 面向对象高级

3.1 抽象类

        概念:必须使用abstract class声明,一个类可以没有抽象发布方法,但是抽象方法必须在抽象类或者接口中
        抽象方法:只声明而未实现的发布方法,必须使用abstract关键字声明
        原则:抽象类本身不能被实例化,也就是不能new一个抽象对象,它必须被子类继承,且被继承的子类必须重写它所有的抽象方法
        抽象类必须使用public或protected修饰        

3.2 接口

        概念:一个类中的方法都是抽象方法属性都是全局常量,那么这个类可以定义为一个接口
                格式:interface 接口名称{ 
                                全局常量;  
                               抽象方法; 
                          } 
                全局常量编写时可以省略public static final
                    例如可以直接写成String info = “内容”
                抽象方法编写时可以省略public abstract
                    例如 void print()
        面向对象的编程思想:定义与现实分离
                优点
                    降低程序耦合性
                    易于程序的扩展
                    有利于程序的维护
        接口继承(extends)
            接口允许多继承
        接口和抽象类的区别
            抽象类要被子类继续,接口要被子类实现
            接口只能声明抽象方法,抽象类中可以声明抽象方法也可以写非抽象方法
            接口定义的变量只能是公共的静态的的常量,抽象方法的变量是普通变量
            抽象类使用继承来使用,无法多继承,接口使用实现来使用,可以多实现
            抽象类可以包含static方法,接口不允许(静态方法不能被子类重写)
            接口不能有构造方法,抽象类可以

3.3 多态

        概念:就是对象的多种表现形式
        体现形式:类中的子父之分,子类就是父类的一种形态,重写和重载也是多态的一种(方法的多态)
       重写:子父中方法的多态性体现
       重载:一个类中方法的多态性体现
       多态的使用:对象的类型转换
       向上转:将子类实例变为父类实例
           格式:父类 父类对象 = 子类实例
       向下转:将父类实例转为子类实例
          格式:子类 子类对象 = (子类)父类实例        

3.4 instanceof

        作用:判断某个对象是否指定类的实例
        格式:实例化对象 instanceof 类 //返回boolean类型的数据

3.5 Object类

        概念:是所有类的父类,如果类中没有明确继承某个具体的类则默认继承Object类 默认可以不写
        Object的多态
            Object可以接收任意的应用数据类型
        toString
            建议重写Object的toString方法,作用是返回对象的字符串表达形式
        equals
            相当于用来作比较,建议重写,equals比较的是两者是否是同一对象的数据
            五大特性
                自反性:自己和自己比较必定返回true即 x.equals(x)返回true,但x为非空
                对称性:若x.equals(y)为true则y.equals(x)也必然true,xy为非空
                传递性:x.equals(y)为true,y.equals(z)为true则x.equals(z)也必然是true,xyz为非空
                一致性:多次调用x.equals(y)的结果始终都是一致的,前提是xy非空且未修改
                非空性:x.equals(null)必然是false,x不能为null

3.6 内部类

        将一个类定义在另一个类或者方法里的类
            成员内部类
                定义在另一个类的内部的类
                可以无条件访问外部类的所有成员属性和成员方法
            局部内部类
                定义在一个方法或者一个作用域里面的类
                它只能访问范围只能是该方法内或者该作用域内
                不能有public、protected、private、static修饰
            匿名内部类
                没有名字的内部类
                格式 new 父类构造器(参数列表)|实现接口{实体部分}
                使用是必须继承一个类或者实现一个接口,只能同时继承一个或者实现一个
                类中不能有构造函数
                不能有任何静态成员变量或静态方法
                和局部内部类一样
                只能访问final型的局部变量
                不能是抽象的,且必须实现继承的类或者接口的所有抽象方法
            静态内部类
                定义在另一个类中的内部类,且用static修饰
                只能访问static的成员变量或者方法

3.7 包装类

        八种包装类的两大数据类型
            Number:Integer、Short、Long、Double、Float、Byte都是Number的子类表示一个数字
            Object:Character、Boolean都是Object的直接子类
        装箱和拆箱
            装箱:将一个基本数据类型变成包装类
            拆箱:将一个包装类变为基本数据类型
        字符串转换
            将字符串转换为指定的基本数据类型

3.8可变参数

        一个方法中定义完了参数,则在调用时必须传入与其对应的参数

3.9递归

在方法的定义中调用自身

附:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值