栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

面向对象编程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面向对象编程

面向对象编程(OOP) 面向过程 & 面向对象 什么是面向对象

面向对象编程的本质就是:以类的方式组织代码,以对象的形式组织(封装)数据

抽象:

三大特性: 封装、继承、多态

从认识论角度考虑是:先有对象后有类。对象,是具体的事物。类,是抽象的,是对对像的抽象

从代码运行角度考虑是:先有类后有对象。类是对象的模板,对象是类的实例.

类与对象的关系

类是一种抽象的数据类型,它是对某一个事物整体描述/定义,但是并不能代表某一个具体的事物。

对象是抽象概念的具体实例

对象在类的里面。

同一个类可以有不同的对象,如:

Student xiaoming = new Student();
Student xiaohong = new Student();

创建与初始化对象

使用 new 关键词创建对象

使用new关键词创建的时候,除了分配内存空间之外,还会给 创建好的对象 进行默认的初始化以及 对类中构造器的调用。

类中的构造器也称为 构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:

  • 必须和类的名字相同

  • 必须没有返回类型,也不能写void

构造器必须掌握

构造器

1.和类名相同

2.没有返回值

作用:

  1. new 本质在调用构造方法

  2. 初始化对象的值

注意点:

  1. 定义有参构造之后,如果想使用无参构造,显示的定义一个无参的构造(就是必须再定义一个无参构造,否者 new 时必须带参数。系统默认的无参构造已经不存在了)

  2. this. 是指向类自己本身

总结
1.类与对象
    类是一个 抽象的 模板,对象是一个 具体的 实例。
2.方法
    定义、调用!
3.对应的引用
    引用类型 和 基本类型(8种)
    对象是通过引用来操作的: 栈---->堆
4.属性:字段Field 成员变量
    默认初始化:
        数字: 0 0.0
        char: u0000
        boolean: false
        引用:null
     修饰符属性类型 属性名 = 属性值
5.对象的创建和使用
       必须使用 new 关键字创造对象,构造器  如:Person yangtao = new Person();
       对象的属性 yangtao.name
       对象的方法 yangtao.sleep()
6.类:
    静态的属性  属性
    动态的行为  方法
​
类就是由属性和方法组成

java的三大特征:封装、继承、多态

修饰符:

public:公共protected:受保护default:默认private私有

封装

该露的露,该藏的藏

​ 我们程序设计要追求 “高内聚,低耦合”。

​ 高内聚:就是类的内部数据操作细节自己完成,不允许外部干涉。

​ 低耦合:仅暴露少量的方法给外部使用。

封装(数据的隐藏)

​ 通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。

​ 属性私有,get/set

封装的意义

  1. 提高程序的安全性,保护数据

  2. 隐藏代码的实现细节。private: 私有

  3. 同一接口

  4. 系统可维护增加了

继承

继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模。

extends的意思是“扩展”。子类是分类的扩展。

JAVA中类只有单继承,没有多继承!一个子类只能有一个父类,但一个父类可以有多个子类。

继承是类和类之间的一种关系。除此之外,类和类之间的关系还有 依赖、组合、聚合等。

继承关系的两个类,一个为子类(派生类),一个为父类(基类)。子类继承父类,使用关键字 extends来表示。

子类和父类之间,从意义上讲应该具有“is a" 的关系

私有的东西无法被继承
  • object类

    在Java中,所有的类,都默认直接或者间接继承Object类
  • super

    public Student() {
        //隐藏代码:调用了父类的无参构造
        //调用父类的构造器,必须要在子类构造器的第一行
        super();
        System.out.println("子类无参执行");
    }

    注意点:

    1. super调用父类的构造方法,必须在构造方法的第一个

    2. super必须只能出现在子类的方法或者构造方法中!

    3. super 和 this 不能同时调用构造方法!

    与 this 的对比:

    ​ 代表的对象不同:

    ​ this:本身调用者这个对象

    ​ super:代表父类对象的应用

    ​ 前提:

    ​ this:没有继承也可以使用

    ​ super:只能在继承条件才可以使用

    ​ 构造方法

    ​ this():本类的构造

    ​ super():父类的构造

  • 方法重写:重点--->多态

    需要有继承关系,子类重写父类的方法!

    1. 方法名必须相同

    2. 参数列表必须相同

    3. 修饰符:范围可以扩大但不可以缩小。 public->protected->default->private

    4. 抛出的异常:范围可以被缩小,但不能扩大。

重写,子类的方法和父类必须一致:方法体不同!

为什么要重写:

  1. 父类的功能,子类不一定需要,或者不一定满足!

与 重载 的比较:

重载就是在一个类中,有相同的函数名称,但形参不同的函数。

方法的重载的规则:

  • 方法名称必须相同

  • 参数列表必须不同(个数不同、或类型不同、参数排序顺序不同等)

  • 方法的返回类型可以相同也可以不相同

  • 仅仅返回类型不同,不足以成为方法的重载。

实现理论:

​ 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。

多态

即同一方法可以根据发送对象的不同而采用多种不同的行为方式。

一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多

多态存在的条件:

  • 有继承关系

  • 子类重写父类方法

  • 父类引用指向子类对象

主要事项:

  1. 多态是方法的多态,属性没有多态

  2. 父类和子类,有联系 类型转换异常! ClassCastException!

  3. 存在条件:1.继承关系,2. 方法需要重写,3.父类引用指向子类对象( Father f1 = new Son(); )!

方法不能被重:

  1. static 方法,它属于类,不属于实例

  2. final 常量;

  3. private 方法;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号