Java面向对象

面向对象:
面向对象是向现实世界模型的自然延伸,是一种万物皆对象的编程思想,在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例,类似于生物分类学一般,分为域、界、门、纲、科、属、种一般,面向对象就是把现实中的事物抽象为一类事物。
以事物为中心,先开发类,得到对象,通过对象之间相互通信实现功能
现有数据结构,后有算法
面向过程:
思想:由过程、步骤、函数组成,以过程为核心,现有算法,后有数据结构

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了,面向对象是把构成问题事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为

面向对象的耦合度低,易维护,易复用,易扩展,是系统灵活,但类调用需要实例化,开销比较大,比较消耗资源。
面向过程的耦合度高,可维护性差,性能高

面向对象的三大特征:封装,继承,多态
封装:是将一类事物的属性和行为封装成一个类,一般是使其属性私有化,行为公开化,提高数据的隐秘性的同时,使代码模块化

原则:将不需要对外提供的内容隐藏起来,把属性都隐藏,提供公共方法对其访问

类的修饰符:private、default(默认)、protected、public

Private:类中限制为private的成员,只能被这个类本身访问,如果一个类的构造方法声明成private,则其他类不能生成该类的一个实例。
Default:类不加任何访问权限限定的成员属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类锁访问。
Protected:类中限定为protected的成员,可以被这个,类本身、他的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他类访问
Public:类中限定为public的成员可以被所有的类访问

继承:
基于已有类的定义的基础,构建新的类,已有类称为父类,新构建的类称为子类,子类能调用父类的非private修饰符访问的成员,同时还可以自己添加一些新的成员,扩充父类,甚至重写父类已有的方法

1.父类可以拥有多个子类,但是子类只能继承一个父类,称为单继承

Java中通过super来实现对父类成员的访问,super用来引用当前对象的父类。Super的使用有三种情况:
访问父类被隐藏的成员变量
调用父类中被重写的方法
调用父类的构造方法

多态:方法的重写、重载域动态连接构成多态性。
多态的一大作用就是为了解耦–为解除父类子类继承的耦合度:多态即使允许父类引用(或接口)指向子类(或实现类)对象。很多的设计模式都是基于面向对象的多态性设计的

多态性:发送消息给某个对象,让该对象自行决定响应何种行为

面向对象的五大原则:

单一职责原则:一个类只做好一件事,只有一个引起他的变化。低耦合,高内聚在面向对象的引申

1.开放封闭原则:软件实体应该使可扩展的,而不可修改的,对扩展开放,对修改封闭

2.Liskov替换原则:子类必须能够替换其基类

3.依赖倒置原则:依赖于抽象。高层模块不依赖于底层模块,二者相同依赖于抽象,抽象不依赖于具体,具体依赖于抽象

4.接口隔离原则:使用多个小的专门的接口,而不要使用一个大的总接口,接口应该是内聚的,一个类对另外一个类的依赖应该建立在最小的接口上,

SRP:就一个类而言,应该只专注于做一件事和仅有一个引起他变化的原因

LSP:如果对于类型S的每一个对象o1,都有一个类型T的对象o2,使对于任意类型T定义的程序P,将o2替代为o1,P的行为保持不变,则成S为T的一个子类。即子类型必须能够替换他的基类型

DIP:高层模块不应该依赖于底层模块,二者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象

DIP:依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性

ISP:使用多个专门的接口比使用单一的总接口要好

值传递:
参数在程序语言中分为形式参数和实际参数

形式参数:在调用有参函数时,主调函数和被调函数之间有数据传递关系,在主调函数中调用一个函数时,函数后面括号的参数称为“实际参数”

实际参数是调用有参方法的时候真正传递的内容,而形式参数是用于接收实参内容的参数

值传递是指在调用函数时将实际参数复制一份传递到函数中,那么在函数中对参数所进行的修改将不会影响到实际参数

引用传递是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将会影响到实际参数

Java中都是值传递(其实都是共享传递),就算传递的是对象,其实也是把对象的地址的引用复制一份给形参,主要看形参在方法中会不会创建一个新的对象,若创建一个新的对象,此时形参指向一个新的地址,修改的是新对象的值,则原对象的值不会发生变化;若不在方法创建新的对象,则源对象的值发生变化

Java的特点:与平台无关:
Java最大的优点就是编写的软件能在所有的计算机上运行,之所以能做到这一点,是因Java可以在计算机的操作系统之上再提供一个Java运行环境(JRE),该运行环境是由Java虚拟机(JVM)、类库以及一些核心文件组成。Java虚拟机的核心是字节码指令,字节码指令不是机器指令,因此他不予特定的平台相关。而Java针对不同平台提供的Java虚拟机的字节码指令是相同的

Java程序的运行过程:
在这里插入图片描述
Java语言提供的编译器不针对特定的平台进行编译,而是针对Java虚拟机编译成字节码(.class文件),字节码被Java虚拟机(Java解释器是Java虚拟机的一部分)解释、运行。Java虚拟机将字节码翻译成本地计算机的机器指令,并将机器指令交给平台运行

字节码其实是一种“中间代码”

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值