前言:OOP是Java语言中重要组成部分,其中面向对象编程是Java中核心编程思想,今天就将OOP知识进行总结

目录

一、思维导图

二、面对对象

1.首先要了解面对对象是什么?

2.具体说法

3.面对对象三大基本特征

三、对象与类

1.对象

2.类

四、方法

1.方法定义

2.有参构造和无参构造

五、重载、构造、重写

1.重载和重写的区别

2.构造

3.方法重写的规则

4.方法重写与方法重载的区别

六、this、static、单例模式、instanceof

1.this关键字

2.static关键字

3.单例模式

4.instanceof

七、接口

八、异常

1.异常定义

2.异常种类


一、思维导图

总结前先列出思维导图

二、面对对象

1.首先要了解面对对象是什么?

这里拿面对对象和面对过程做个对比

面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后在使用的时候一一调用则可。性能较高,所以单片机、嵌入式开发等一般采用面向过程开发

面向对象:是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。面向对象有封装、继承、多态的特性,所以易维护、易复用、易扩展。可以设计出低耦合的系统。但是性能上来说,比面向过程要低。

2.具体说法

1 ---> 面向对象—针对具体的对象 是把构成问题的事务分解成各个对象

2 ---> 建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为和特性

3 ---> 无序性是关键

3.面对对象三大基本特征

封装:将对象的属性及行为统一管理,所带来的结果能够简化代码

继承:具备父类的属性及行为,并且具有共同的特征;通常子类 会针对父类做增强,具体体现会覆写父类的方法,或者新增方法; 当然还有其他特点,如能够复用代码

多态:特点是拥抱变化,具体体现在类型提升/转型,抽象类,接口

三、对象与类

1.对象

1、对象:万事万物皆对象,可以将身边的任何一件事以及任何一个事物作为对象,同时对象还具有属性(对象具有的各种特种),以及属性值(每个对象的每个属性拥有的特定值)以及方法

举个栗子:具体一个人是一个对象(但是人类是抽象类),人的身高、姓名、体重是属性,而身高对应的180cm是属性值,其中人可以动脑、吃、睡、掉头发都是方法

2.类

2.1概念

类是Java程序的核心,它定义了对象的形状和本质,可以用类来创建对象。当使用一个类创建了一个对象时,通常说给出了这个类的一个实例。 类由类声明和类体构成

2.1.1其中类声明需要注意的点

一、Java的类声明是创建类时必须对类的一些性质进行描述。包括类名、类的父类、类所实现的接口及类的修饰符。它的一般格式为:

1、[public][abstract|final] class ClassName [extends superclassName]

2、[implements interfaceNameList]

二、关键字class前面是可选修饰符的,其中:

1、public:访问权修饰词,允许所有的类访问它,如果某个类以public做修饰词,那么这个类的类名必须和Java文件名(*.java)相同。

2、abstract:对父类的修饰词,当这个类声明为抽象类时,该类就不能被实例化。

3、final:对子类的修饰词,当这个类被声明为最终类时,它不能再有子类。 如果这个类上面还有父类,那么就需要用到extends修饰词,在之后跟父类名。如果要实现某个接口,就需要用到implements修饰词,后面跟接口名。

2.1.2类体需要注意的点

一、紧跟在类名后面的大括号以及大括号之间的内容称之为类体。

1、我们在程序中写类的目的就是为描述一类事物共有的属性和功能。

2、类体将完成对数据及对数据的操作进行封装。

二、类体内容由两种类型构成:

1、成员变量:

通过变量声明定义的变量,称之为成员变量或域,它用来描述类创建的对象的属性。

2、方法:

类体主要由方法构成。方法可分为构造方法和普通方法。其中构造方法具有重要地位,它供类创建对象时使用,用来给出类所创建的对象的初始状态。普通方法可以由类所创建的对象调用,对象调用这些方法操作成员变量形成一定的算法,体现了对象具有某种功能。

2.2类声明和类体

类声明:    class className     {

类体:              //body

}

class是声明类的关键字,每个字母都小写。“class ClassName”是类的声明部分,“ClassName”需符合Java声明类名的标准规范,即每个单词的第一个字母需要大写 {}”以及之间的内容称为类体。

2.3类具体的实例

public class Circle {private double radius;private double area;final double PI = 3.14;public void setRadius(double r) {radius = r;}public double getArea() {return PI * radius * radius;}}

2.4类与对象的对比

类:类是抽象的

对象:对象是具体的

补充:关于final关键字的使用

final变量就是我们常说的常量

1、按照Java的命名规范,常量的名字的所有字母都应该大写

2、 final变量是不占用内存的,所以在声明final变量时,必须初始化

3、final变量不同于类变量和实例变量,对象虽然可以使用它,但是不能对它进行更改操作

四、方法

1.方法定义

一个方法包括方法的名称、主体、返回的数据类型

其中返回类型包括带有返回值和没有返回值的

2.有参构造和无参构造

有参构造有参构造可以理解为带有参数的构造方法

public void setRadius(double r) {radius = r;}

无参构造:无参构造可以理解为没有参数的构造方法

 public double getArea() {return PI * radius * radius;}

五、重载、构造、重写

1.重载和重写的区别

override(重写)

   1、方法名、参数、返回值相同。

   2、子类方法不能缩小父类方法的访问权限。

   3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。

   4、存在于父类和子类之间。

   5、方法被定义为final不能被重写。

 overload(重载)

  1、参数类型、个数、顺序至少有一个不相同。

  2、不能重载只有返回值不同的方法名。

  3、存在于父类和子类、同类中。

2.构造

构造分为有参构造和无参构造

有参

public Dog(String name, int health, int love, String strain) {this.name = name;this.health = health;this.love = love;this.strain = strain;}

无参

public Dog() {}

3.方法重写的规则

1、在继承关系的子类中

2、重写的方法名、参数、返回值类型必须与父类相同

3、私有方法不能继承因而也无法重写

4.方法重写与方法重载的区别

六、this、static、单例模式、instanceof

1.this关键字

this的字面意思是指这个,this的用法有以下用法

调属性

this.name = name;
this.health = health;
this.love = love;
this.strain = strain;

调方法

this.print();

调用构造方法

this("杠子",100,100,"军犬");

2.static关键字

static字面意思为静态的,可用在方法和属性后面, 一般放在修饰符的后面

2.1特点

1、非静态的属性和方法只能通过对象来拿到或者调用

2、修饰符不为private的情况下,静态的属性和方法可以类名直接调用

3、对于属性来讲:如果加了static,那么这个属性就是公用的,所有通过这个类产生的对象都共享该属性

4、对于方法来讲:

4.1:静态的只能调用静态的

4.2:静态方法里面只能调用静态的的方法与属性

4.3:非静态的方法既能调用静态的方法,也能使用静态的属性

2.2用途

1创建工具类

2计算对象个数

网站在线人数

游戏在线人数

赋予对象ID

3.单例模式

(109条消息) 我给面试官讲解了单例模式后,他对我竖起了大拇指!_欢迎来到「小菠萝」的博客-CSDN博客

4.instanceof

instanceof关键字说明

1 该运算符用来判断一个对象是否属于一个类或者实现了一个接口,结果为true或false

2 在强制类型转换之前通过instanceof运算符检查对象的真实类型,可以避免类型转换异常,从而提高代码健壮性

举例:

public class TestPoly2 {public static void main(String[] args) {// Pet pet = new Penguin("凯文", "A妹");Pet pet = new Dog("铁柱", "短尾");pet.eat();if (pet instanceof Dog) {Dog dog = (Dog) pet;dog.catchingFlyDisc();} else if (pet instanceof Penguin) {Penguin pgn = (Penguin) pet;pgn.swimming();}}
}

七、接口

接口这里要注意一点就是实现接口,使用关键词implements,而实现类关键词是用extends

   1、接口表示的其实是一种能力
       对象是对现实世界物体的抽象
       类是对对象的抽象
       接口是对类的抽象
    2、语法:public interface 接口名
       如果一个类要实现这些功能:
       语法是 public class 类名 implements 接口名1,接口名2...
    3、接口与抽象类的区别:
       a:抽象类是类所以只能单继承,而接口(interface)可以多实现
       b:抽象类继承用extends,而接口用implements
       c:抽象类可以有构造,接口不能
       d:抽象类可以有一般的属性,接口中的属性只能是静态常量
       e:抽象类中可以有抽象方法,也可以有一般的方法,而接口中只能有抽象方法
       f:抽象类中抽象方法可以被除private以外的修饰符修饰,但是接口中只能是public
    4、常量一定是全大写

八、异常

1.异常定义

程序中预先想好了 对付异常的处理办法,程序运行,如果出现异常,对异常进行处理,处理完毕,程序会继续进行

2.异常种类

异常类型分为两种,一种是异常处理,另一种是抛出异常

2.1异常处理:
几种常见的处理方式:

1 使用try-catch进行抓错

2 使用try-catch-finally进行抓错

3 使用多重catch进行抓错

2.2抛出异常:

1 Java语言中通过throws声明某个方法可能抛出的各种异常

2 可以同时声明多个异常,之间由逗号隔开

3.异常处理

Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws

4.异常分类

总结就到这里了,希望能帮到你们

点个关注不迷路

Java的OOP(面向对象编程)总结,有这一篇足矣相关推荐

  1. Java基础-OOP 面向对象编程

    OOP 面向对象编程 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构.强调的是具有某些特定功能的对象. 面向过程编程(Proced ...

  2. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  3. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  4. 一文带你深入理解【Java基础】· 面向对象编程(下)②代码块、final和abstract

    写在前面 Hello大家好, 我是[麟-小白],一位软件工程专业的学生,喜好计算机知识.希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正!谢谢大家!!! ...

  5. java oop_Java实现OOP(面向对象编程)

    一.对象的综述 面向对象编程(OOP)具有多方面的吸引力.对管理人员,它实现了更快和更廉价的开发与维护过程.对分析与设计人员,建模处理变得更加简单,能生成清晰.易于维护的设计方案.对程序员,对象模型显 ...

  6. java OOP面向对象编程—2

    目录 第一节:static关键字 1.1 static 变量 1.2 静态方法 1.3 static 代码块 1.4 static 的优点和缺点 第二节: package和import 2.1 pac ...

  7. 什么是OOP(面向对象编程)?

    我们来思考一个简单的问题:如何使用Python程序表示一只小狗呢?没错,表示一只小狗,或者说用Python程序对小狗进行建模,如果你回答不上来,那么请跟着我来看一下如何解决这个问题.下面是一只小狗的照 ...

  8. Java语言基础-面向对象编程三步走之打开冰箱门

    开头: 何谓"面向对象" 面向对象是一种编程思想. 思想是一个很虚无缥缈的东西,但是它可以从一个人的具体行动中体现出来,如果说你坚持每天跑步,每天读书,做一些有益于身心健康的事情, ...

  9. Java学习:面向对象编程

    探索面向对象编程 面向对象 任务1.采用面向对象方式求三角形面积 (一)编程实现 (二)讲解知识点 (三)拓展练习 任务1.创建学生类并测试 任务2.采用面向对象求解一元二次方程 面向对象 面向对象( ...

最新文章

  1. Linux查看系统开机时间(转)
  2. VTK修炼之道69:体绘制讨论_颜色传输函数
  3. arthas使用示例:options全局开关
  4. 小鹏汽车窃密特斯拉实锤?前员工回应:确实上传过30万份Autopilot源码
  5. [转载]在vim中针对c++自动补全
  6. (转)Shell脚本之break,continue,和exit区别
  7. VB.NET版+三层实现登陆
  8. IBM X3850 X5 PCI故障实例
  9. matlab偏最小二乘法
  10. powerdesign如何利用表导出sql
  11. 各系列显卡性能参数对比
  12. Java中枚举类的ordinal()方法
  13. 服务器销售术语,服务器术语大全
  14. (二)textarea中placeholder不显示
  15. linux电脑接电视,Ubuntu下如何给通过HDMI连接电视机的计算机强制设置1920*1080分辨率...
  16. CSP 202109-4 收集卡牌
  17. solidity 入门
  18. 错误代码1500什么意思_错误代码1500是什么意思啊
  19. H5 跳转Flutter APP问题:在Flutter中解决H5能够打开APP并接收H5传递的参数
  20. “错误 C1083 无法打开包括文件: “boost/shared_ptr.hpp”: No such file or directory”解决办法

热门文章

  1. 美颜的奥秘——磨皮底层原理
  2. 显示pycharm地图
  3. HTML5 聚光灯特效
  4. jzoj 1307. Jail
  5. 谷歌浏览器(Chrome)如何安装crx插件?(详细步骤)
  6. 勘误发布:《数字滤波器的MATLAB与FPGA实现——Xilinx/VHDL版》P320
  7. 中国农业银行h5支付(php接入中国农业银行h5支付)
  8. java aes ctr_AES CBC和CTR加解密实例
  9. java properties文件 变量_properties文件和环境变量
  10. Java并发23:Atomic系列-普通原子类型AtomicXxxx学习笔记