java 一文讲透面向对象 (20万字博文)

简介: java 面向对象专题 全面总结,20万字深度讲解。

目录

一、前言

二、面向对象程序设计介绍

       1.oop三大特性 :

       2.面向对象和面向过程的区别 :

       3.面向对象思想特点 :

       4.面向对象的程序开发 :

三、Java——类与对象

       1.java中如何描述一个事物?

       2.什么是类?

       3.类的五大成员:

       4.封装的前提——抽象 :

       5.什么是对象 :

       6.类和对象的关系 :

       7.java中如何定义一个类 :

       8.创建对象的格式 :

       9.如何使用一个对象 :

       10.关于匿名对象 :

四、Java——成员变量和局部变量

       1.关于成员位置和局部位置 :

       2.成员变量和局部变量的区别 :

               ①定义位置 :

               ②初始化 :

               ③作用域 :

               ④jvm内存 :

               ⑤修饰符 :

               ⑥生命周期 :

五、oop三大特性——封装篇(两万余字)

六、oop三大特性——继承篇(四万余字)

七、oop三大特性——多态篇(十万余字)

八、面向对象总结


一、前言

       本篇博文是对Java 面向对象的一个全面总结,同时也囊括了我们"面向对象"专题的几乎全部内容。屏幕前的你一定或多或少地听说过面向对象三大特性——封装,继承,多态。诚然,能否掌握这三大特性,直接决定了能否正确理解和运用面向对象思想。但是,不止如此,面向对象思想是浩瀚的,是惊奇的,是美妙的。只有保持虚心,不断练习,我们才能越来越深刻地理解她的伟大。

       本篇博文将会从面向对象的介绍类与对象成员变量和局部变量面向对象三大特性四个大的方面同大家娓娓而谈。当然,重点肯定是oop三大特性了。对于面向对象介绍中的一些概念,大家了解即可,不需要背。这一章内容非常全面,尤其是oop三大特性部分,up投入最大,相信大家看完后一定收获不小。注意 : 代码中的注释也很重要。点击目录或者侧边栏可以跳转。良工不示人以朴,所有文章都会适时改进。感谢阅读!


二、面向对象程序设计介绍

       1.oop三大特性 :

       在说oop三大特征之前,大家先要知道——什么是oop?

       “oop”是面向对象程序设计(Object Oriented Programming)的简称。

       oop三大特性分别为——封装,继承,多态。其中,封装是实现继承的前提,继承是实现多态的前提。这三大特性之间一环扣一环,因此,如果想学好面向对象三大特性,就必须把每一个特性都扎实的掌握。

       2.面向对象和面向过程的区别 :

       面向过程思想就是把关注点放在一件事或者一个活动中涉及到的步骤(也就是过程)上的思维方式。比如我们接触编程的入坑作——C语言。C是一门典型的面向过程的语言,当我们要用C来解决或者描述一件事情的时候,我们需要弄清楚事情的来龙去脉,列出实现目标需要的每个具体步骤,然后按部就班的一个接一个实现步骤。就是说,我们是作为执行者从事情发展的角度来进行编程的。

       面向对象思想就是把关注点放在一件事或者一个活动中涉及到的人或事物(也就是对象)上的思维方法。比如我们正在学习的java。java是一门典型的面向对象的语言,当我们要用java来描述或者解决一件事情的时候,我们不再需要关注完成这件事情所需的具体步骤,而是关注在这件事情中出现了几个对象,这些个对象分别参与了哪些行为。我们只需要将这些行为以编程的方式实现即可。就是说,我们是作为指挥者从人事管理的角度来进行编程的。

       面向过程程序设计性能更高,但是面向对象程序设计更易拓展和维护程序

       3.面向对象思想特点 :

       与面向过程相比,面向对象更符合人们的思考习惯;面向对象可以把复杂的事情变得简单化;面向对象让人们从执行者变为了指挥者

       4.面向对象的程序开发 :

       面向对象编程的设计开发,就是不断地找对象,使用对象,指挥对象做事情的一个过程。


三、Java——类与对象

       1.java中如何描述一个事物?

       在java中,我们通过创建“类”来描述事物,类主要由属性行为构成。比方说,我们可以创建一个Animal类来模拟世界上所有的动物。动物有哪些属性呢?物种名,栖息地,平均寿命等;动物有哪些行为呢?吃喝拉撒等。

       2.什么是类?

       类,即“归类,分类”。类是一系列具有相同属性和行为的事物的统称

       类用来模拟现实事物。比如,用来模拟手机的Phone类——

       属性 : 品牌,型号,价格,发售日期等等;

       行为 : 打电话,发短信,打游戏,看网课等等;

       3.类的五大成员:

       类的五大成员分别是属性方法构造器代码块内部类

       (除去内部类外,其他四大成员均在这篇博文中讲到;内部类考虑到使用频率和难度问题,up将其放在了“java 进阶”专栏。)

       4.封装的前提——抽象 :

       抽象就是把一系列相关事物共同的属性和行为提取出来的过程。比如我们上面提到的Animal类和Phone类的例子。

       5.什么是对象 :

       某一类事物的某个具体存在,即某一类事物的一个具体实例

       6.类和对象的关系 :

      类 : 属性和行为的集合体,是一个抽象概念。(类用来模拟一类事物)

      对象 : 是某一类食物的具体体现,是一个具体存在

       eg1 :

       狗——类。世界上的狗有千千万只,不知道指的是哪一只狗,因此单说“狗”指的是一个抽象概念。

       楼下阿姨养的那只宠物狗——对象。“楼下阿姨养的那只宠物狗”是千千万狗中的指定的一只狗,是具体的。

       eg2 :

       手机——类

       任正非手中的华为手机——对象

       7.java中如何定义一个类 :

       java中定义类的过程,就是把一系列相关事物共同的属性和行为抽取出来的过程。其实就是我们上文提到的“抽象”。

 image.png

       PS : 类中的属性既可以是基本类型,也可以是引用类型。

       8.创建对象的格式 :

       类名 对象名 = new 类名();

       ①new是Java中用于创建对象的关键字。

       ②此处的“对象名”即一个指向堆空间中真正对象的引用变量。(即C中的指针,在Java中叫做引用)

       ③“类名()” 即真正的对象,在堆空间中

       ④创建某一个类的对象,也称为“实例化该类”,在实例化类之前,会先将要实例化的类的字节码文件加载到方法区(仅1次)。

       9.如何使用一个对象 :

       对象名.变量名

       对象名.方法名(形参列表)

       演示 :

packageknowledge.oop.preface;
/** 定义了一个手机类 */publicclassPhone {
//手机的属性Stringbrand="Huawei";
doubleprice=13499;
//手机的行为publicvoidcall() {
System.out.println("打电话📞~");
    }
}
classTest {
publicstaticvoidmain(String[] args) {
//创建Phone类对象Phonephone=newPhone();
//调用Phone类属性System.out.println("Phone's brand = "+phone.brand);
System.out.println("Phone's price = "+phone.price);
//调用Phone类行为phone.call();
    }
}

image.gif

      输出结果 :

image.png

       10.关于匿名对象 :

       匿名对象指没有用任何引用做接收的对象。

     

//eg : newPhone().call();
image.gif

       ①由于new关键字的存在,匿名对象是确确实实在堆空间中存在的

       ②匿名对象仅能使用一次,因为没有引用指向它,使用后它的内存权限会被收回,不能再使用。


四、Java——成员变量和局部变量

       1.关于成员位置和局部位置 :

       成员位置 :

       类中,方法外。

       局部位置 :

       方法的参数列表或者方法体语句。代码块中。

      如下 :

publicclassDemo {
Stringname; //成员位置publicvoidshowName() {
Stringname="nb";    //局部位置System.out.println("name = "+name);
    }
}

image.gif

       2.成员变量和局部变量的区别 :

               ①定义位置 :

               如上所示——成员变量定义在成员位置;局部变量定义在局部位置

               ②初始化 :

               成员变量 : 默认的初始化值(我们在数组专题已经讲过),定义时可以不赋初值,可以正常调用。

               局部变量 : 默认的初始化值,定义时可以不赋初值,但必须先赋值再使用

               如果局部变量定义时未赋初值就使用,IDEA会报错,如下图所示 :

image.png

               ③作用域 :

              成员变量: 作用域为整个类

              局部变量 : 作用域为定义它的代码块或者方法体中

               PS : 成员变量和局部变量可以重名,但在同一作用域中,两个变量不能重名。即两个成员变量或者两个局部变量是不可以重名的,否则报错。

                      当出现成员变量和局部变量重名的情况时,我们称为“强龙不压地头蛇”布局定式,遵循就近原则

               ④jvm内存 :

              成员变量: 存在于堆内存中;

              局部变量 : 存在于栈内存中;

               ⑤修饰符 :

              成员变量: 可以加修饰符

              局部变量 : 不可以加修饰符;

               ⑥生命周期 :

              成员变量: 生命周期较长——随着对象的创建而存在,随着对象的消失而消失。

              局部变量 : 生命周期较短——随着方法的调用而存在,随着方法的调用完毕而消失。


五、oop三大特性——封装篇(两万余字)

               链接如下 :

https://blog.csdn.net/TYRA9/article/details/128429036

               封装篇主要内容包括 :

               ①封装的引入和介绍

               ②private关键字

               ③this关键字

               ④构造器详解

               ⑤标准代码JavaBean


六、oop三大特性——继承篇(四万余字)

               链接如下 :

https://blog.csdn.net/TYRA9/article/details/128523078

               继承篇主要内容包括 :

               ①继承的引入和介绍

               ②继承关系中成员变量的使用

               ③继承关系中成员方法的使用

               ④继承关系中构造方法的使用

               ⑤继承的特点和本质

               ⑥方法重写和Java四大访问权限修饰符


七、oop三大特性——多态篇(十万余字)

               链接如下 :

https://blog.csdn.net/TYRA9/article/details/128745582

               继承篇主要内容包括 :

               ①多态的引入和介绍

               ②多态的具体使用

               ③多态的优缺点

               ④类型转换

               ⑤Java动态绑定机制

               ⑥多态的应用

               ⑦抽象类

               ⑧final关键字 和 static关键字

               ⑨接口

               ⑩Debug断点调试


八、面向对象总结

       再次回顾我们的面向对象专题。我们以抽象来引出了类的定义;而将抽象出来的东西封闭到一个类中,就是封装;让封装好的两个类之间产生父子关系,就是继承;在产生父子类关系的基础上,父类引用指向子类对象,就是多态。所以说,抽象是封装的前提,封装是继承的前提,继承是多态的前提。说是三大特性,其实一环扣一环,谁也离不开谁。

       🆗,以上就是面向对象专题的全部内容了。面向对象是java基础中相当有分量的一部分,大家一定要认真对待。整个专题的内容非常丰富,基本涵盖了面向对象所有的知识点,但是字数上略显冗余。如果大家有好的建议和想法,或者对文章的纠错,可以在评论区和up交流。感谢阅读!

目录
相关文章
|
10天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
10 2
|
2月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
2月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
33 4
|
2月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
28天前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
13 0
|
2月前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
55 2
|
3月前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
3月前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?
|
2月前
|
Java 开发者
Java 面向对象
Java 是一种面向对象的编程语言,通过对象与类的概念组织代码和数据。面向对象编程的核心包括类、对象、继承、多态、封装和抽象。类是对象的蓝图,定义了属性和行为;对象则是类的实例。继承允许子类继承父类的属性和方法,增强代码复用性;多态则支持通过相同接口调用不同类型对象的行为,包括方法重载和重写。封装通过公共方法隐藏对象细节,提高安全性;抽象则对对象特征进行提炼,通过抽象类和接口实现。理解这些概念有助于设计高效、可维护的 Java 应用程序。
|
3月前
|
Java 开发者 C++