java面向对象最全入门笔记

news2024/12/26 21:39:04

Java面向对象


什么是面向对象编程?

面向:找、拿。

对象:东西。

面向对象编程:找或者拿东西过来编程。

设计对象并使用

设计类,创建对象并使用

类是什么?

类(设计图):是对对象共同特征的描述;

对象:是真实存在的实例。

结论:再Java中,必须先设计类,才能创建对象并使用。

什么是对象?(What is an Object?)

软件世界的对象以现实世界的对象为模型。软件对象在概念上类似于现实世界的对象:它们也由状态和相关行为组成。对象将其状态存储在字段(某些编程语言中的变量)中,并通过方法(某些编程语言中的函数)公开其行为。方法对对象的内部状态进行操作,并充当对象到对象通信的主要机制。

什么是类?(What is a Class?)

Java是一种面向对象的编程语言。

Java 中的所有内容都与类和对象相关联,以及它的属性和方法。类就像一个对象构造函数,或者一个用于创建对象的“蓝图(模板)”。

什么是继承?(What is Inhertance?)

不同种类的物体通常彼此之间有一定的共同点,我们可以把共同属性放在一个父类,由子类去继承父类的状态和行为。

什么是接口?(What is an Interface?)

在 Java 编程语言中,接口是一种引用类型,类似于类,只能包含常量、方法签名、缺省方法、静态方法和嵌套类型。

实现接口,允许类对其承诺提供的行为变得更加正式。接口在类和外部世界之间形成一个协定,这个协定在生成时由编译器强制执行。如果您的类声明实现接口,则该接口定义的所有方法都必须出现在其源代码中,然后类才能成功编译。

接口的使用者只需要关心出/入参,不需要关心具体的业务实现。

什么是多态?(What is Polymorphism?)

Java中的多态性是以不同方式执行单个操作的任务。

当存在继承/实现时,就会发生多态性,即有许多类彼此相关。

Java 中的多态性允许我们使用这些继承的属性来执行不同的任务。因此,允许我们以许多不同的方式实现相同的行动。

什么是抽象类?

抽象类是处理程序抽象的类。一般而言,抽象是面向对象编程的特征,它只“显示”基本信息,“隐藏”不必要的信息。抽象的首要目的是向用户隐藏不必要的细节。抽象是从更大的信息池中选择对用户有益且相关的数据。

面向对象与面向过程的思想

面向过程:亲力亲为,侧重于分析过程。

面向对象:所有事情交给相应的对象完成,侧重于如何创建对象。

可总结为下面三点:

        1.都可以实现代码重用和模块化编程,但是面对对象的模块化更深,数据更封闭,也更安全!因为面向对象的封装性更强!

        2.面对对象的思维方式更加贴近于现实生活,更容易解决大型的复杂的业务逻辑

        3.从前期开发角度上来看,面对对象远比面向过程要复杂,但是从维护和扩展功能的角度上来看,面对对象远比面向过程要简单!


面向对象三大特性

(1)面向对象特性之封装性

为什么要封装?

Java程序设计追求“高内聚,低耦合”

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

低耦合:仅对外暴露少量的方法用于使用

隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露岀来。这就是封装性的设计思想

(2)面向对象特性之继承性

继承关键字:extends

this和super

this:表示当前对象或者构造方法,两种不同用法的区别是:

this.属性。表示当前类的对象,只能在方法当中使用,通常用于在方法中区分成员变量和参数。

this():此时的this()表示,当前类的一个构造对应的构造方法。当this被当作构造方法使用时,它只能写在构造方法的第一行。

super:可以表示父类的对象或者构造方法。

super.属性:表示当前类的父类的对象,用法和this相似

super():表示调用父类的一个构造方法,用法和this相似

继承的特点

        1.继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。

        2.对象的一个新类可以从现有的类中派生,这个过程称为类继承。

        3.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。

        4.派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。

        5.Java中只允许单继承,但允许多层继承。

(3)面向对象特性之多态性

定义:在Java中,多态是指不同类的对象在调用同一个方法时所呈现出的多种不同行为。

说明:通常来说,在一个类中定义的属性和方法被其他类继承或重写后,当把子类对象直接赋值给父类引用变量时,相同引用类型的变量调用同一个方法所呈现出的多种不同形态。


以上就是今天分享的内容,如果你觉得有用记得点赞收藏,记得评论哦,你们的点赞评论是我继续分享的动力哦~

(以上图片及文字整理于网络,如有侵权联系删除)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/65563.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue Cli安装和node-sass、less-loader、sass-loader安装

一、Vue Cli安装 CLI全程是Command-Line Interface,命令行界面,俗称脚手架,可以帮我们快速的创建vue项 Vue Cli的使用必须依赖node环境和webpack 管理员方式打开cmd进行安装,安装命令: npm i -g vue/cli 查看版本…

鸢尾花数据种类预测、分析与处理、scikit-learn数据集使用、seaborn作图及数据集的划分

一、鸢尾花种类预测 Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理,Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集 鸢尾花数据集包含了 4个属性(特征值) Sepal.Length(花萼长度&#…

Linux学习-69-Linux系统启动管理

16 Linux系统启动管理 Linux 系统的启动是不需要人为参与和控制的,只要选择开机,系统就会按照设定好的方式进行启动。不过,了解系统的启动有助于我们在系统出现问题时能够快速地修复 Linux 系统。在 CentOS 6.x 中,系统的启动过程…

NoSQLBooster for MongoDB 7.1.X

最智能的 MongoDB IDE NoSQLBooster 是 MongoDB v2.6-6.0 的跨平台 GUI 工具,它提供了内置的 MongoDB 脚本调试器MongoDB 脚本调试器、全面的服务器监控工具、链接流畅查询、SQL 查询、查询代码生成器、任务调度、ES2020 支持和高级智能感知体验。 嵌入式 MongoDB 外…

网络面试-0x17如何立即诶OSI模型和TCP/IP协议

OSI(Open System Interconnect) 开放式通信系统互连参考模型。 每一层实现各自的功能和协议,并完成与相邻层的接口通信。即每一层扮演固定的角色,互不打扰。 应用层 ⑦ 作用:通过应用程序间的交互来完成特定的网络应用。 定义了应用程序之间…

【ONE·R || R与C++混合编程简单介绍 】

总言 课堂演讲:R语言与CPP混合编程课后学习汇报。    文章目录总言1、汇报目的2、RCPP2.1、简单介绍:2.2、简单使用演示:2.1.1、Rcpp包与RTools2.2.2、上手尝试1.0:一个hello world小程序。2.2.3、上手尝试2.0&#…

STC 51单片机57——矩阵键盘 基本原理演示

51单片机 矩阵键盘 基本原理演示 #include "reg51.h" sbit P11P1^1; sbit P14P1^4; sbit P20P2^0; sbit P21P2^1; void main(void) { P111;// Hight P140; //Low if(P111) P200; else P210; while(1); }

刷爆力扣之较大分组的位置

刷爆力扣之较大分组的位置 HELLO,各位看官大大好,我是阿呆 🙈🙈🙈 工作原因拖更些时日,今天阿呆继续记录下力扣刷题过程,收录在专栏算法中 😜😜😜 该专栏按照…

Java项目:SSM农业信息管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 管理员角色包含以下功能: 管理员登陆,用户管理,新闻管理,留言列表查看等功能。 用户角色包含以下功能: 查看所有新闻,市…

免费分享20套微信小程序源码 源码免费下载【强烈推荐】

淘源码:国内知名的源码免费下载平台 微信小程序源码包括:商城系统、点餐外卖、垃圾分类、预约洗车、物业管理、校园跑腿、驾考学习、会议预约、图书管理、智能停车、在线答题等小程序源码。 源码分享,文末获取源码! 1、JAVA微信…

微信API接口、微信二次开发API调用

微信API接口、微信二次开发API调用 微信协议接口调用-加微信好友及通过好友请求 加微信好友 /** * 微信自动添加好友 * author wechatno:tangjinjinwx * blog http://www.wlkankan.cn */ Async public void handleMsg(ChannelHandlerContext c…

代码随线录刷题|LeetCode 392.判断子序列 115.不同的子序列

目录 392.判断子序列 思路 1、确定dp数组 2、确定递推公式 3、初始化dp数组 4、遍历顺序 判断子序列 动态规划 双指针 115.不同的子序列 思路 1、确定dp数组 2、确定递推公式 3、初始化dp数组 4、遍历顺序 不同的子序列 392.判断子序列 题目链接:力扣 思路 比较简单…

【Exception】 Java Lambda List转换Map报错 触发异常 IllegalStateException: Duplicate key

【Exception】 Java Lambda List转换Map报错 触发异常 IllegalStateException: Duplicate key 一、问题描述 在使用Java8 lambda 将List转换为Map时,遇到报错:IllegalStateException- Duplicate key .... 具体报错信息如下: java.lang.Illega…

基于Dockerfile创建镜像

目录 一、Docker镜像的创建 1 基于现有镜像创建 2 基于本地模板创建 3 基于Dockerfile 创建 3.1 联合文件系统(UnionFS ) 3.2 镜像加载原理 二、Dockerfile 操作命令的指令 1 FROM 镜像 2 MAINTAINER 名字 3 RUN 命令 4 ENTRYPOINT 5 CMD ENTRYPOINT和CMD的区别&…

HTML网页设计【足球科普】学生DW静态网页设计

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

【openWrt】设置执行定时任务

遇到一个问题,使用openWrt软路由搭建服务器,在docker装了一个maccmsV10,需要每天执行cj信息定时任务,但是maccmsV10本身不支持执行定时任务的配置的。 看了下,openWrt是支持本身是linux系统,所以是可以设…

糟糕,数据库异常不可用怎么办?

摘要:糟糕,数据库异常不可用怎么办?挺着急的,在线等。本文分享自华为云社区《糟糕,数据库异常不可用怎么办?》,作者:GaussDB 数据库。 随着数字化转型的加速,数据量爆发…

获取鼠标在画布中的位置

获取鼠标在画布中的位置 效果展示 概述 本文讲解如何实现我们平时用的画布软件中&#xff0c;怎么获取的我们鼠标时刻在画布中的位置。 构建HTML框架 <body><div class"box"></div> </body>CSS样式 <style>.box {/* 设置盒子…

IDEA 2022.3 发布,终于支持 redis 了

IntelliJ IDEA 发布了最新2022.3版本&#xff0c;本次更新&#xff1a;可以通过设置切换到新 UI&#xff0c;即可预览焕然一新的 IDE 外观。引入了一个新的 Settings Sync&#xff08;设置同步&#xff09;解决方案&#xff0c;用于同步和备份自定义用户设置。此外&#xff0c;…

私域运营对于企业的重要性

企业进行私域流量的精细化运营&#xff0c;不仅可以打造属于企业自己的社群王国&#xff0c;还可以挖掘存量客户的价值&#xff0c;实现更智能的客户管理和个性化运营方案。 前言 相信每个人都对瑞幸咖啡略有耳闻&#xff0c;这个国产咖啡品牌曾一度被封神&#xff0c;但随着财…