Java期末复习指南(1):知识点总结+思维导图,考试速成!

🔖面向对象


📖 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/bicheng/14671.shtml

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

相关文章

(全面)Nginx格式化插件,Nginx生产工具,Nginx常用命令

目录 &#x1f3ab; 前言 &#x1f389; 开篇福利 &#x1f381; 开篇福利 x2 Double happiness # 介绍 # 地址 # 下载 &#x1f4bb; 命令及解析 # 整个文件系统中搜索名为nginx.conf的文件 # 编辑nginx.conf文件 # 重新加载配置文件 # 快速查找nginx.conf文件并使…

建筑施工突发事故应急处置vr安全培训平台

在不断发展的时代背景下&#xff0c;掌握必要的应急安全知识已成为我们生活中不可或缺的一部分。由央企携手我们华锐推出的3D线上应急宣教虚拟体验馆&#xff0c;标志着民众应急安全教育的全新里程碑&#xff0c;不仅突破了传统学习模式的局限&#xff0c;还让每个人都能在灵活…

防火墙技术基础篇:基于IP地址的转发策略

防火墙技术基础篇&#xff1a;基于IP地址的转发策略的应用场景及实现 什么是基于IP地址的转发策略&#xff1f; 基于IP地址的转发策略是一种网络管理方法&#xff0c;它允许根据目标IP地址来选择数据包的转发路径。这种策略比传统的基于目的地地址的路由更灵活&#xff0c;因…

深度学习之Python+OpenCV+Tensorflow实时人体检测和计数

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习之PythonOpenCVTensorflow实时人体检测和计数项目简介 一、项目背景与意义 随着科技的不断发展&#xff…

Go微服务: 日志系统ELK的应用

概述 基于前文&#xff0c;我们已经了解并搭建完成ELK的所有环境了&#xff0c;现在我们来结合应用程序来使用ELK参考前文&#xff1a;https://active.blog.csdn.net/article/details/138898538 封装日志模块 在通用工具模块: gitee.com/go-micro-services/common 这个包是通…

CTFHUB技能树——SSRF(三)

目录 URL Bypass 数字IP Bypass 302跳转 Bypass DNS重绑定 Bypass SSRF绕过方法&#xff1a; &#xff08;1&#xff09; http://abc.com127.0.0.1 &#xff08;2&#xff09;添加端口号 http://127.0.0.1:8080 &#xff08;3&#xff09;短地址 htt…

限制U盘使用:企业数据安全的软件解决方案

在当今数字化办公环境中&#xff0c;U盘作为一种便捷的数据传输工具&#xff0c;其使用在企业内部非常普遍。然而&#xff0c;U盘的不当使用也给企业数据安全带来了巨大风险。为了防止数据泄露和病毒传播&#xff0c;企业需要采取有效的软件解决方案来限制U盘的使用。本文将探讨…

docker容器安装mysql

linux: centOS-7 hadoop: 3.3.6 前置章节&#xff1a; (图文并茂)基于CentOS-7搭建hadoop3.3.6大数据集群-CSDN博客 可选&#xff1a;zookeeper安装教程-CSDN博客 1.安装docker 1.1 添加docker的repo源 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/…

集合、Collection接口特点和常用方法

1、集合介绍 对于保存多个数据使用的是数组&#xff0c;那么数组有不足的地方。比如&#xff0c; 长度开始时必须指定&#xff0c;而且一旦制定&#xff0c;不能更改。 保存的必须为同一类型的元素。 使用数组进行增加/删除元素的示意代码&#xff0c;也就是比较麻烦。 为…

一种简单实用的ollvm反混淆的方案与源码

我是一名从事反欺诈&风控&设备指纹相关的工作&#xff0c;最近对ollvm的如何逆向的问题进行了学习与思考。 ollvm是一个开源免费的so混淆工具&#xff0c;对于逆向的小白来说简直是灾难性的存在。 这个例子是超简单&#xff0c;我想每个人都可以学会跟掌握&#xff0c;…

面试问题小结

说说你的项目&#xff0c;从里面学到啥了&#xff08;随便说&#xff09; CAS 线程池 的各个方面 线程咋创建&#xff08;4种方式&#xff09; 说一下聚集索引和非聚集索引 50w男 50w女 &#xff0c;在B树中咋存储的&#xff08;类似下面的图&#xff0c;变通一下就行了&a…

本是梦中人,常作花下客。心中自往来,知我有几个。

我们总是喜欢拿“顺其自然”来敷衍人生道路上的荆棘坎坷&#xff0c;却很少承认&#xff0c;真正的顺其自然&#xff0c; 其实是竭尽所能之后的不强求&#xff0c; 而非两手一摊的不作为。 一花凋零荒芜不了整个春天&#xff0c; 一次挫折也荒废不了整个人生。 多年后&#x…

近临算法(个人总结版)

背景 近邻算法&#xff08;Nearest Neighbor Algorithm&#xff09;是一种基本但非常有效的分类和回归方法。最早由Fix和Hodges在1951年提出&#xff0c;经过几十年的发展和改进&#xff0c;已成为数据挖掘、模式识别和机器学习领域的重要工具。近邻算法基于相似性原则&#x…

通过el-tree自定义渲染网页版工作目录,实现鼠标悬浮显示完整名称、用icon区分文件和文件夹等需求

目录 一、通过el-tree自定义渲染网页版工作目录 1.1、需求介绍 1.2、使用el-tree生成文档目录 1.2.1、官方基础用法 ①效果 ②代码&#xff1a; 1.2.2、自定义文档目录&#xff08;实现鼠标悬浮显示完整名称、用icon区分文件和文件夹&#xff09; ①效果&#xff08;直接效…

find 几招在 Linux 中高效地查找目录

1. 介绍 在 Linux 操作系统中&#xff0c;查找目录是一项常见的任务。无论是系统管理员还是普通用户&#xff0c;都可能需要查找特定的目录以执行各种操作&#xff0c;如导航文件系统、备份数据、删除文件等。Linux 提供了多种命令和工具来帮助我们在文件系统中快速找到目标目…

浅谈后端整合Springboot框架后操作基础配置

boot基础配置 现在不访问端口8080 可以吗 我们在默认启动的时候访问的是端口号8080 基于属性配置的 现在boot整合导致Tomcat服务器的配置文件没了 我们怎么去修改Tomcat服务器的配置信息呢 配置文件中的配置信息是很多很多的... 复制工程 保留工程的基础结构 抹掉原始…

朴素贝叶斯+SMSSpamCollections

1. 打开 Jupyter 后&#xff0c;在工作目录中&#xff0c;新建一个文件夹命名为 Test01 &#xff0c;并且在文件夹中导入数据 集。在网页端界面点击 “upload” 按钮&#xff0c;在弹出的界面中选择要导入的数据集。然后数据集出现 在 jupyter 文件目录中&#xff0c;此时…

初识Qt:从Hello world到对象树的深度解析

Qt中的对象树深度解析 Hello world1.图形化界面创建命令行式创建在栈上创建在堆上创建为什么传文本需要QString&#xff0c;std::string不行吗&#xff1f;那为什么要传入this指针&#xff1f;为什么new后不用显示调用delete函数呢&#xff0c;不会造成内存泄漏问题吗&#xff…

python:__class_getitem__使用以及cached_property源码分析

python&#xff1a;__class_getitem__使用以及cached_property源码分析 1 前言 Python中如何模拟泛型类型&#xff1f; 当使用类型标注时&#xff0c;使用 Python 的方括号标记来形参化一个 generic type 往往会很有用处。 例如&#xff0c;list[int] 这样的标注可以被用来表…