Java面向对象知识总结+思维导图

🔖面向对象


📖 Java作为面向对象的编程语言,我们首先必须要了解类和对象的概念,本章的所有内容和知识都是围绕类和对象展开的!

▐ 思维导图1

 ▐ 类和对象的概念

 •  简单来说,类就是对具有相同特征的一类事物的描述,而对象是类的具体实例.

 •  比如说 '车' 就是一个大的概念,它可以具体化为奔驰、宝马、帕拉梅拉。那么车就是一个类,奔驰车就是以车类为模版的一个实例化对象。

 •  一个类中包含成员变量和成员方法

 上图程序最终输出:50W帕拉梅拉 is running

 

 构造方法

 •  构造方法的作用是初始化对象,并且分为无参构造方法和有参构造方法

 •  构造方法的方法名与类名相同,没有返回值,且不需要void修饰。 

 •  如果一个类没有定义构造方法,Java会提供一个默认的无参构造方法

 •   在一个类中可以有多个构造方法 ( 构造方法可以重载 ).

public class Car {String name;String price;//无参构造方法public Car(){name="帕拉梅拉";price="50W";System.out.println(name+price);}//有参构造方法public Car(String name,String price){this.name=name;this.price=price;System.out.println(name+price);}public static void main(String[] args) {new Car();//输出: 帕拉梅拉50Wnew Car("奔驰","40W");//输出: 奔驰40W}
}

 方法的重载

 •  当一个类中有多个名字相同的方法时,可以通过参数的个数、类型、顺序,在调用时进行区分

 •  方法的重载与返回值类型无关

public class Car {String name;String price;int count;//有参构造方法public Car(String name,String price){this.name=name;this.price=price;System.out.println(name+price);}//参数的类型不同public Car(String name,int count){this.name=name;this.count=count;System.out.println(name+count);}//参数顺序不同public Car(int count,String name){this.name=name;this.count=count;System.out.println(name+count);}public static void main(String[] args) {new Car("奔驰","40W");//输出:  奔驰40Wnew Car("帕拉梅拉",6);//输出:  帕拉梅拉6new Car(6, "帕拉梅拉");//输出: 帕拉梅拉6}
}

 this与super关键字

 •  this在类中表示当前正在访问的对象,主要是为了区分成员变量和局部变量

 封装

 •  即为成员变量或成员方法添加一个访问权限修饰符,使外界不得随意操作,主动权在类的手中 .

📖访问权限修饰符

 •  public        公共权限 ------- 修饰的成员在任何地方都可以访问到.  

 •  protected  受保护权限 ---- 在本类 / 同包的其他类中可以访问到,及不同包的子类.

 •  default       默认权限 ------- 在本类 / 同包的其他类中可以访问到.

 •  private       私有权限  ------ 只能在本类访问到. (常用)

    protected和默认(default)的区别就是,protected可以在不同包的子类中访问 

 •  封装起来之后,通常是通过类中向外提供的特殊方法进行访问,这样就可以加入控制语句

public class Car {private String name;//向外提供set和get方法public String getName() {return name;}public void setName(String name) {//加入控制语句if(name.length()<5){this.name = name;}}
}

 代码块

 •  代码块就是在类中声明的一个没有名字的代码块,分为实例代码块和静态代码块

 •  实例代码块: 在每次创建对象时执行,静态代码块: 在类被加载时自动执行

 格式: {  实例代码块内容  }                   static {   静态代码块内容   }

📖类什么时候会被加载?

 •  运行类中的main方法时.

 •  访问类中的静态成员变量或静态成员方法时.

 •  创建类的对象时.

public class Car {{System.out.println("实例代码块");}static {System.out.println("静态代码块");}public static void main(String[] args) {new Car();new Car();new Car();/*依次输出:静态代码块实例代码块实例代码块实例代码块*/}
}

 static关键字

 •   static静态的意思,static关键字可以修饰类中的成员变量,成员方法,代码块,内部类.

  (不能修饰构造方法)

 •  static修饰成员变量:

静态成员变量也称类变量,在内存中只有一份,所有对象可以共享,一般情况下,将类中所有对象都相同的属性设置为静态的。

 •  static修饰成员方法:

修饰的成员方法也称为类方法,可以直接使用类名访问,在静态的方法中只能访问静态的成员变量,非静态的方法中可以使用静态的成员变量。

 •  static关键字修饰的属性特点:

•  随着类的加载而加载

•  优先于对象存在

•  静态成员被所有对象共享

•  可以直接使用类名访问

注意:

 •  静态的方法中,只能使用静态的成员变量,因为他们都是随着类的加载而加载的;

 •  一旦方法中使用了非静态的成员变量,那么此方法就不能定义为静态的;但非静态的方法中可以使用静态的成员变量

▐ 思维导图2

📖面向对象的三大特征:封装,继承,多态是本章的重点,第二部分将围绕继承和多态展开

▐ 继承 

 •  简单来说,继承就是将某一事物的共同属性抽取出来单独定义一个类 (父类),其它子类可以继承父类,这样不仅实现了代码的复用,子类也可以扩展自己特有的功能。

 •  举个简单的例子,现在有三个动物:猫,狗,鸟,它们都有一个共同属性:名字name,那么就可以将name属性定义在一个Animal动物类中,也就是父类,这样就不需要在猫,狗,鸟类中分别定义name属性了,它们只需继承Animal父类即可。

 •  继承具有传递性,即一个类只能直接继承一个类;但可以间接继承多个类。

 •  继承使用的是extends关键字,子类继承父类后,拥有了父类的成员变量和成员方法

 •  子类不能继承父类中的私有属性

public class Cat extends Animal{//Cat继承Animal的成员变量和成员方法,但不能访问私有成员
}

📖当一个类没有显示继承其他类的时候默认继承object类,Object类是java类体系中最大的       类,Object类之上再也没有别的类。

▐ 多态

 •  多态的使用前提是两个类存在继承关系

 •  多态也称向上转型,也就是将子类类型向上转为父类类型

Animal dog = new Dog();

 •  多态实现了用父类类型表示任意子类类型的对象,利于程序扩展

📖通过一个案例给大家解释下吧!

public class Animal {public void makeSound() {System.out.println("Animal is making a sound");}
}
public class Dog extends Animal{@Override//方法的重写public void makeSound() {System.out.println("Dog is barking");}public static void main(String[] args) {Animal dog = new Dog();//现在我们可以使用Animal类的引用来引用Dog对象dog.makeSound();  //输出Dog is barking}
}

在上述案例中,Animal引用的是一个Dog对象,但是调用的是Dog类中重写的makeSound()方法,这就是多态的效果!

如果你对这个案例还有疑惑,这里有个小口诀:

编译看左边,运行看右边

Animal dog = new Dog();

意思是:编译时我们看左边Animal类中的属性,运行是看右边Dog类中的内容

▐ 方法的重写

在上述多态的案例中我们就用了方法的重写,在子类Dog中对父类Animal中的makeSound方法进行了重写,最终运行的是重写后的方法中的内容。所以方法的重写也就是当父类中方法的实现不能满足子类需求时,在子类中对父类的方法进行重写 / 覆盖,这样调用时就会调用子类中重写的方法.

重写时需要注意: 

 •  子类重写的方法结构与父类方法的结构必须一致 ( 即方法名,参数列表,返回值类型必须一致)

 •  构造方法和静态方法不能重写,成员变量不存在重写。

 •  使用 @Override 注解标签



▐ 结语:

       希望这篇关于对 Java面向对象的基础知识总结 能对大家有所帮助,欢迎大佬们留言或私信与我交流~~学海漫浩浩,我亦苦作舟!大家一起学习,一起进步!

本人微信:  g2279605572 

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

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

相关文章

【Spring】认识 IoC 容器和 Servlet 容器

认识 IoC 容器和 Servlet 容器 1.认识容器1.1 IoC 容器1.2 loC 的实现方法1.2.1 依赖注入1.2.2 依赖查找 1.3 认识 Servlet 容器 2.用 IoC 管理 Bean2.1 创建一个 Bean2.2 编写 User 的配置类2.3 编写测试类 3.用 Servlet 处理请求3.1 注册 Servlet 类3.2 开启 Servlet 支持 1.…

力扣:1738. 找出第 K 大的异或坐标值

1738. 找出第 K 大的异或坐标值 给你一个二维矩阵 matrix 和一个整数 k &#xff0c;矩阵大小为 m x n 由非负整数组成。 矩阵中坐标 (a, b) 的 值 可由对所有满足 0 < i < a < m 且 0 < j < b < n 的元素 matrix[i][j]&#xff08;下标从 0 开始计数&…

晶圆厂的PE转客户工程师前景怎么样?

知识星球&#xff08;星球名&#xff1a; 芯片制造与封测技术社区&#xff0c;星球号&#xff1a; 63559049&#xff09;里的学员问&#xff1a; 目前在晶圆厂做PE&#xff0c;倒班oncall压力太大把身体搞坏了&#xff0c;现在有一个design house的CE客户工程师的offer&…

跨境选品师不是神话:普通人也能轻松掌握,开启全球贸易新篇章!

随着互联网技术的飞速发展&#xff0c;跨境电商行业已成为全球经济的新增长点。在这个背景下&#xff0c;一个新兴的职业——跨境选品师&#xff0c;逐渐走进了人们的视野。那么&#xff0c;跨境选品师究竟是做什么的?普通人又该如何成为优秀的跨境选品师呢? 一、跨境选品师的…

ABAQUS应用07-实现拉伸和压缩刚度不同的弹簧建模

文章目录 0、背景描述1、步骤 0、背景描述 到目前为止&#xff0c;本文的内容我还没有具体实践过&#xff0c;但是个人认为后期是会用到的。比如说&#xff0c;对于风电机组地基转动刚度的设置&#xff0c;土体就是一种拉压刚度并不相同的材料。所以现在先记录下来&#xff0c…

如何用Java实现SpringCloud Alibaba Sentinel的熔断功能?

在Java中使用Spring Cloud Alibaba Sentinel实现熔断功能的步骤如下&#xff1a; 添加依赖 在项目的pom.xml文件中添加Spring Cloud Alibaba Sentinel的依赖&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud…

Java进阶学习笔记24——Object类

Object类: Object类是Java中所有类的祖宗类&#xff0c;因此&#xff0c;Java中所有类的对象都可以直接使用Object类中提供的一些方法。 所有类都是Object类的子孙类。 API文档&#xff1a; Object类的成员方法&#xff1a; Object类的常见方法&#xff1a; Student类&…

Arthas反编译与重新加载class

一、背景 因为其他研发部门同事给的产品jar包存在一个问题&#xff0c;就是http底层的超时时间默认为60s&#xff0c;但是最近调用外部接口同步数据&#xff0c;这个数据量太大导致超时超过60s&#xff0c;每次同步都不成功。但是客户目前对此情况特别不满意&#xff0c;需要紧…

勒索病毒的策略与建议

随着网络技术的快速发展&#xff0c;勒索病毒攻击成为全球范围内日益严重的网络安全威胁。勒索病毒通过加密用户文件或锁定系统来勒索赎金&#xff0c;给个人和企业带来了巨大的损失。因此&#xff0c;了解如何应对勒索病毒攻击至关重要。本文将概述一些有效的防范措施和应对策…

2024电工杯数学建模B题完整论文讲解(含每一问python代码+数据)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024电工杯数学建模B题大学生平衡膳食食谱的优化设计及评价完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 …

Linux网络编程:HTTPS协议

目录 1.预备知识 1.1.加密和解密 1.2.常见加密方式 1.2.1.对称加密 1.2.2.非对称加密 ​编辑 1.3.数据摘要&#xff08;数据指纹&#xff09;和数据签名 1.4.证书 1.4.1.CA认证 1.4.2.证书和数字签名 2.HTTPS协议 2.1.自行设计HTTPS加密方案 2.1.1.只使用对称加密 …

uniapp使用uni.chooseImage选择图片后对其是否符合所需的图片大小和类型进行校验

uni.chooseImage的返回值在H5平台和其他平台的返回值有所差异&#xff0c;具体差异看下图 根据图片可以看出要想判断上传的文件类型是不能直接使用type进行判断的&#xff0c;所以我使用截取字符串的形式来判断&#xff0c;当前上传图片的后缀名是否符合所需要求。 要求&#…

驱动与系统学习网址

DRM&#xff08;Direct Rendering Manager&#xff09;学习简介-CSDN博客 Android Qcom Display学习(零)-CSDN博客 https://blog.csdn.net/hexiaolong2009/category_9705063.htmlhttps://blog.csdn.net/hexiaolong2009/category_9705063.htmlRender Hell —— 史上最通俗易懂…

区间合并-leetcode合并石头的最低成本-XMUOJ元素共鸣:深层次的唤醒

题目 思路 话不多说&#xff0c;直接上代码 附上INT_MAX和INT_MIN 【C】详解 INT_MAX 和 INT_MIN&#xff08;INT_MAX 和 INT_MIN是什么&#xff1f;它们的用途是什么&#xff1f;如何防止溢出&#xff1f;&#xff09;_c int max-CSDN博客 代码 /* leetcode合并石头的最低…

clone方法总结Java

Java中Object类当中有许多方法&#xff0c;如图所示&#xff1a; clone方法就是其中一种&#xff0c;分为浅拷贝&#xff0c;深拷贝举一个例子&#xff1a; 浅拷贝&#xff1a; 在Person类当中右键鼠标然后&#xff0c;选中Generate&#xff1a; 然后重写clone方法 protecte…

【微服务】springboot 构建镜像多种模式使用详解

目录 一、前言 二、微服务常用的镜像构建方案 3.1 使用Dockerfile 3.2 使用docker plugin插件 3.3 使用docker compose 编排文件 三、环境准备 3.1 服务器 3.2 安装JDK环境 3.2.1 创建目录 3.2.2 下载安装包 3.2.3 配置环境变量 2.2.4 查看java版本 3.3 安装maven …

pyqt 浮动窗口QDockwidget

pyqt 浮动窗口QDockwidget QDockwidget效果代码 QDockwidget QDockWidget 是 PyQt中的一个控件&#xff0c;它提供了一个可以停靠在主窗口边缘或者浮动在屏幕上的窗口小部件&#xff08;widget&#xff09;。QDockWidget 允许用户自定义其界面&#xff0c;并提供了灵活的停靠和…

Elasticsearch集群许可证过期问题解决方法汇总

最近在使用elasticsearch的过程中,使用elastic-head进行可视化展示集群的状态和信息,从2024年5月18日突然elastic-head无法现在集群的状态界面啦,elasticsearch集群状态是正常,命令如下: curl -X GET "localhost:9200/_cluster/health?pretty" 在google页面上通过…

引流500+创业粉,抖音口播工具

在抖音平台运营一个专注于口播的工具号&#xff0c;旨在集结超过500位热衷于创业的粉丝&#xff0c;这需要精心筹划的内容策略和周到的运营计划。首先&#xff0c;明确你的口播工具号所专注的领域&#xff0c;无论是分享创业经验、财务管理技巧还是案例分析&#xff0c;确保你所…

【电子元件】TL431 电压基准

TL431(C23892)是一种常用的可调节精密电压基准和电压调节器。它广泛应用于电源管理、精密参考电压和稳压电路等领域。以下是TL431的一些关键特点和使用方法&#xff1a; 关键特点 可调输出电压&#xff1a;TL431的输出电压可以通过外部电阻网络在2.495V到36V范围内调整。精度高…