java面向对象

面向对象是什么?

将现实的事物抽象出来,注意抽象这个词是重点,把现实对象的事物以及关系,抽象成类,通过继承、实现、组合的方式把万事万物都给容纳了。实现了对现实世界的抽象和数学建模。
抽象会使复杂的问题简单化,从以前执行者变成指挥者,面向对象更符合人类思维,面向过程符合机器思想。
比如说老王在公司上班,接到上司指令要干啥干啥,老王忙了一天。
那么,这一天里老王都在亲自工作,可以看成老王一整天都在面向过程,而上司一整天就发个命令看个结果,那么上司这一整天就是面向对象

再比如:
把大象放进冰箱里分为以下步骤:把冰箱门打开;把大象放进去;关上冰箱门(强调过程和过程中所涉及的行为(强调行为、动作、过程))。
用面向对象思想考虑:无论是打开冰箱,放进大象,关闭冰箱,所有操作都是操作冰箱这个对象,所以只需要将所有功能都定义在冰箱这个对象上,冰箱上就有打开、存储、关闭得所有功能 。

面向过程的优缺点:

优点: 性能比面向对象好,因为类的调用需要实例化,开销比较大,消耗资源比较多
缺点: 不易维护、不易复用、不易扩展

面向对象的优缺点:

优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活,更易于维护
缺点: 性能比面向过程差

内部结构

成员变量和成员方法

成员变量:访问修饰符修饰符(作用范围) 类型(存储结构) 属性名称(引用)=初始值(实际物理值);

   访问修饰符:可以使用四种不同的访问修饰符中的一种,包括public(公共的),protected(受保护的),无修饰符和 private(私有的)。public 访问修饰符表示属性可以从任何其它代码调用。private 表示属性只可以由该类中的其它方法来调用。       

    修饰符:是对属性特性的描述,例如:static、final 等等。

    类型:属性的数据类型,可以是任意的类型。

    属性名称:任何合法标识符

    初始值:赋值给属性的初始值。如果不设置,那么会自动进行初始化,基本类型使用缺省值,对象类型自动初始化为 null。

    成员变量有两种:一种是被static关键字修饰的变量,叫类变量或者静态变量(在类加载时初始化);另一种没有static修饰,为实例变量(在对象创建时初始化)。

    二者在程序运行时的区别,实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了(直接在方法区读取数据)。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用

    成员方法:访问修饰符 修饰符 返回值类型 方法名称 (参数列表) throws 异常列表 {方法体}

    修饰符:是对方法特性的描述,例如:static、final、abstract、synchronized 等等。

   返回值类型:表示方法返回值的类型。如果方法不返回任何值,它必须声明为 void(空)。 Java 技术对返回值是很严格的,例如,如果声明某方法返回一个int值,那么方法必   须从所有可能的返回路径中返回一个int值(只能在等待返回该 int 值的上下文中被调用。)

   方法名称:可以是任何合法标识符,并带有用已经使用的名称为基础的某些限制 条件。

   参数列表:允许将参数值传递到方法中。列举的元素由逗号分开,而每一个元素包含一个类型和一个标识符。

throws 异常列表:子句导致一个运行时错误(异常)被报告到调用的方法中,以便以合适的方式处理它。异常在后面的课程中介绍。

花括号内是方法体,即方法的具体语句序列。

和变量一样分为实例方法和静态方法

构造方法

    目的:主要用来给对象的数据进行初始化

    格式:访问修饰符类名() { }

代码块

    1、局部代码块

        在局部代码块(方法体)中定义的变量属于局部变量,随方法的调用创建,随方法的出栈而消失

    2、构造代码块

        优先于构造方法执行(等同于将其放置在构造方法体中的首行),随构造方法执行而执行

    3、静态代码块

        只随类的加载而加载,无论创建多少次对象,只执行一次。

    创建对象时代码执行顺序:

    静态代码块(父类到子类)--构造代码块(父类)--构造方法(父类)--构造代码块(子类)--构造方法(子类)--方法(自然顺序)

访问修饰符

在这里插入图片描述

面向对象三大特性五大原则三大特性

封装: 隐藏对象的属性和实现细节,仅对外提供公有的访问方式,将变化隔离,便于使用,提高复用性和安全性。
继承: 提高代码的复用性,继承是多态的前提。
多态: 父类或接口定义的引用变量指向子类或具体实现的实例对象,提高程序的扩展性。
五大原则:

单一职责原则: 类的功能要单一,不能包罗万象,跟杂货铺一样。
开放封闭原则: 一个模块对于扩展是开放的,对于修改是封闭的。想增加功能可以,想修改不行。
里式替换原则: 子类可以替换父类出现在父类所能出现的地方。子类能代表父类进行一些行为。
依赖倒置原则: 高层次的模块不应该依赖于低层次的模块,都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。
接口分离原则: 设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。

继承的注意事项

  1. 父类的构造方法不能被继承。
  2. 构造方法不能被继承,但是可以使用super关键字去访问父类的构造方法。
  3. 方法和属性可以被继承(只能继承父类非私有化的属性和方法)。
  4. super关键字必须是构造方法的第一行语句。
  5. 子类的构造方法第一行语句默认都是super();
  6. Java在创建一个子类对象时,首先调用父类的不带参数的构造方法,生成父类对象,然后在去调用子类的构造方法,生成子类对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值