面向对象基础

1. 面向对象概述

c 语言是面向过程的,面向过程就是把一件事按步骤一步一步来实现

而 java、c++ 等是面向对象的,面向对象就是把现实问题抽象为对象,通过调用每个对象的属性或方法去解决问题

面向对象思想主要由以下三个部分组成:

(1)OOA 面向对象分析:按照面向对象的思想来分析业务,对需求中描述的问题,进行模块化的处理

(2)OOD 面向对象设计:是个中间过渡,对 OOA 分析的结果进一步规范化,以便能被 OOP 直接接受

(3)OOP 面向对象程序:把构成问题的各个事务分解成各个对象

2. 类与对象

2.1 类

类决定了某一类对象的外观和行为,由属性和方法组成,创建关键字 class

构造方法与类同名,不含返回值也不用 void ,作用是对类初始化,一个类可以有多个构造方法,一旦显式定义后,系统就不再提供默认的构造方法

方法重载:方法名称相同,参数类型或长度不同

  • 构造方法重载在不同的创建对象的需求下,调用不同的方法来完成对象的初始化
  • 普通方法也能重载

2.2 对象

类是对象的抽象,对象是类的实例,一个类可以创建多个对象,创建关键字 new

new 出来的对象是存放在中的,栈存放的是对象的引用(即对象在堆中的地址)

栈:位于 RAM 中,创建程序时 java 必须要知道栈内所有项的生命周期,以便上下移动指针

堆:通常是内存池,创建对象时不用关心堆内存中需要开辟多少存储空间,也不用关注内存占用时长,有很大的灵活性


关于回收内存问题:

栈:当栈内存不存在对象的引用时,则被视为垃圾,由 GC 垃圾回收器自动回收

堆:需要手动回收


匿名对象:没有对象名称的对象

匿名对象只能使用一次,因为没有任何的对象引用,所以被称为垃圾,等待 GC 回收

3. 三大特征

3.1 封装

封装是将类的属性 或 方法隐藏起来,通过权限访问修饰符(public、protected、default、private)进行限制,总的来说,封装是一种信息隐藏技术

封装属性:可以将属性私有化,用 private 修饰;可以提供 getter、setter 方法来供外部访问

封装方法:对外隐藏内部的实现细节,只暴露必要的接口供外部访问


public:对所有类可见

protected:对同一包内的类 和 所有子类可见

default 默认:在同一包内可见

private:在同一类内可见

3.2 继承

继承 extend:允许一个类继承另一个类的属性和方法,通过继承,子类可以重用父类的代码,并在此基础上,添加新的属性和方法,从而实现代码的重用和扩展

this 表示当前方法调用者的地址值;super 代表父类存储空间

java 不支持多继承,子类只能继承一个父类,可以使用接口来实现多继承


抽象类是对的抽象;接口是行为的抽象,是抽象方法的集合

参数抽象类 abstract接口 interface
实现子类继承 extends 抽象类,如果子类不是抽象类的话,它要重写抽象类的所有抽象方法子类 implements 实现接口,实现接口中所有声明的方法
构造器可以有不能有
访问修饰符抽象类中的方法可以是任意访问修饰符接口方法默认修饰符是public,不允许定义为 private 或者 protected
多继承一个类最多只能继承一个抽象类一个类可以实现多个接口

3.3 多态

多态:允许不同的类通过同样的接口来表现不同的行为,多态性使得可以在运行时才确定要执行的具体方法,而不是在编译时确定

使用多态的前提条件:

(1)子类继承父类

(2)子类对父类的方法进行重写

(3)父类引用执行子类对象

父类类型 对象名称 = 子类对象;
Animal myCat = Cat();
  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值