Java面向对象
文章平均质量分 81
独属于Java语言的最基本语法,这部分内容是基础,很重要,面向对象学明白了,你会发现自己的思维方式也得到了很大的跨越,这时候,你会发现这门语言不再困难,后面越学越容易。并且也只有掌握这些你才能应对越来越多的框架
凤文Studying
一位正在学计算机、学医的大学生,
来到CSDN学习、分享和交流。
学习嘛,有输入也要有输出。
因为兴趣和热爱,我们一起成长!
展开
-
Java面向对象_01 类与对象
相信作为初学者的我们刚接触Java这样的面向对象的编程语言,我们听到最多的就是面向对象,可是你真的理解了面向对象吗?为什么要叫做面向对象呢?Object一词除了“对象”的意思,还有“物体”的意思,其实二者本质就是一个东西,程序设计中的对象就好比我们现实生活中的物体。比如说,现实生活中的一个人,一个苹果这样凡是实体的物品,在程序中都可以叫做对象,而生活中那些不存在的,虚拟的事物如动物,人类,水果,这程序中我们称它为类,它们都有个专业的词叫做抽象的事物。原创 2022-01-07 19:17:07 · 352 阅读 · 0 评论 -
Java面向对象_02 面向过程与面向对象的区别
面向过程与面向对象面向过程面向对象面向对象与面向过程的区别面向过程面向过程编程就是分析出解决问题的步骤,然后使函数把这些步骤一步步实现,重心放在完成的每个过程上。举个例子,比如你饿了,想要吃饭,于是呢你就得炒菜,对于面向过程的分析是这样的:检查食材是否齐全如果还不够,就去市场买菜洗菜点火炒菜出锅装盘这些过程你需要每一步都自己做,于是你的代码是这样实现的:/** * 炒菜 * * @author Administrator 1. 检查食材是否齐全 2. 如果还不够,就去市场买原创 2022-01-08 19:43:36 · 420 阅读 · 0 评论 -
Java面向对象_03 实例变量和静态变量
类中的成员变量实例变量静态变量实例变量声明变量在一个类中,但在方法、构造方法、语句块之外,没有static修饰。如果变量没有赋值,那么它有默认值:数值型变量默认为0;布尔型默认为false;引用类型默认为null;实例变量属于该类的对象,必须先产生该类对象,才能调用实例变量。就是说,实例变量是对象带有的属性,在类外面是不能直接用的。public class Person {//实例变量 String name; int age; double height; void si原创 2022-01-11 22:27:23 · 178 阅读 · 0 评论 -
Java面向对象_04 构造函数
构造函数构造函数构造方法的调用构造函数的作用Java构造函数,也叫构造方法,构造器(Constructor),是Java中的一种特殊的函数。构造方法没有返回类型,函数名和类名保持一致。new对象产生后,就调用的对象的属性和方法。作用:字如其名,就是用来通过类来构造对象的,一般用来初始化成员属性和成员方法的。格式:修饰符 类名(参数列表){ }每个类都一定有构造方法,默认的是无参构造函数,另外有有参构造函数。无参构造函数public class Student { publi原创 2022-01-15 18:53:09 · 424 阅读 · 0 评论 -
Java面向对象_05 匿名构造块
匿名构造块就是没有名字的代码块。构造代码块的格式:{ }代码块的作用:对象统一初始化对象创建之前都会执行这个代码块。public class Test1 { { System.out.println("匿名构造块执行了"); } public Test1() { System.out.println("对象创建了"); } public static void main(String[] args) { Test1 t1 = new Test1(); }}原创 2022-01-19 18:43:35 · 532 阅读 · 0 评论 -
Java面向对象_06 方法的定义和调用、方法重载
方法方法的定义方法的调用构造函数和普通方法的区别方法重载方法的定义方法是类或对象的行为特征的抽象。Java中的方法不能独立存在,必须定义在类体中,这也是Java是纯面向对象语言的的重要原因。语法格式:权限修饰符 返回值类型 方法名(参数类型 参数名){ 方法体 (返回值) }方法定义的先后顺序无所谓;方法定义不能产生嵌套包含关系;方法定义中的返回值与传递的参数类型均为Java中定义的数据类型;在方法中可以进行返回数据的处理,格式:return 返回数据类型void 不返回数据类型pub原创 2022-01-20 18:58:30 · 385 阅读 · 0 评论 -
Java面向对象_07 封装
面向对象的封装机制什么是封装?为什么要封装对象?封装的控制和实现什么是封装?封装是指隐藏对象的属性和实现的细节,仅对外提供公共的访问方式。封装原则:将不需要对外提供的内容都隐藏起来把属性都隐藏,提供公共方法对其访问为什么要封装对象?先来说一下封装的好处:提高数据访问的安全性隐藏了实现细节从数据安全角度没有封装,在外部类可以直接访问和修改数据,造成数据不安全。比如没有封装的一个对象如下://创建一个Person对象,对于它,有姓名和年龄的属性public class Per原创 2022-01-25 14:09:39 · 274 阅读 · 0 评论 -
Java面向对象_08 this关键字
thisthis关键字this关键字调用本类属性变量this关键字调用本类方法this关键字使用注意this关键字this代表当前对象的一个引用所谓当前对象,指的是调用类中方法或属性的那个对象this只能在方法内部使用,表示对“调用方法的那个对象” 的引用this关键字调用本类属性变量this.属性名:表示本对象自己的属性当参数列表中的变量名与对象的成员变量名一致时,对象的属性会被方法或构造器的参数屏蔽。这个时候,我们就可以使用 this.属性名 来代替成员变量。public class P原创 2022-01-31 19:10:34 · 391 阅读 · 0 评论 -
Java面向对象_09 static关键字
staticstatic修饰变量实例变量与静态变量的区别static修饰方法static修饰变量static变量也称作静态变量,也叫做类变量。静态变量被所有的对象所共享,在内存中只有一个。当且仅当在类初次加载时会被初始化静态变量属于类,通过类名就可以调用静态变量,也可以通过对象名.静态变量名调用public class Student { private String name; public static String schoolName; public static int co原创 2022-02-03 18:12:06 · 584 阅读 · 0 评论 -
Java面向对象_10 类的生命周期
类的生命周期类的生命周期加载验证准备解析初始化各成分加载顺序和内存中的存放位置类的生命周期一个Java文件从编码完成到最终执行,一般主要包括两个过程编译运行编译,即把我们写好的java文件,通过javac命令编译成字节码,也就是我们常说的.class文件。运行,则是把编译生成的.class文件交给Java虚拟机(JVM)执行。而我们所说的类加载过程即是指JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程。举个通俗点的例子来说,JVM在执行原创 2022-02-02 22:35:49 · 187 阅读 · 0 评论 -
Java面向对象_11 类的设计分析实战
类的设计分析实战类设计学生类的设计分析教师类的设计课程类的设计成绩类的设计代码实现学生类的实现教师类的实现课程类的实现成绩类的实现需求:学生、教师、课程、成绩的类设计类设计学生类的设计分析1 Student类中包含姓名、成绩两个属性2.分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值3.Student类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和成绩属性赋值4.在测试类中创建两个Student对象,一个使用无参的构造方法,然后调用方法给姓名原创 2022-02-07 22:35:36 · 936 阅读 · 0 评论 -
Java面向对象_12 Java方法参数和值传递
方法参数和值传递方法参数类型是基本数据类型和引用类型方法参数类型是基本数据类型和引用类型在Java方法中参数列表有两种类型的参数,基本数据类型和引用数据类型参数类型是基本数据类型,那么传过来的就是这个参数的一个副本参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地址。方法的参数是基本数据类型public class Test1 { int a = 5; int b = 6; public void change(int a, int b) { a =原创 2022-02-09 20:38:45 · 464 阅读 · 0 评论 -
Java面向对象_13 可变参数
可变参数意思是参数的个数是可变,用作方法的形参,可以使方法参数个数为动态变化的。可变参数变量底层其实是一个数组;如果一个方法有多个参数,包含可变参数,可变参数要放在最后。在一般情况下,我们对于方法重载是这么写的:但是有了可变参数,我们可以把相同类型用可变参数 来表示;要注意可变参数必须要放在最后。如果要是可变参数放在前面,当形参列表一样的时候,就没法区分第一个参数是单个参数还是个数组,但是如果我们把可变参数放后面,那前面的对应好了,剩下的就都属于数组了。...原创 2022-09-03 06:00:00 · 171 阅读 · 0 评论 -
Java面向对象_14 类的继承
类的继承继承的作用如果没有继承机制是怎么样的?使用继承机制后的示例?类的继承是什么?子类和父类的继承机制Java单继承Java继承的顶级父类:Object对象的类型转换对象向上转型对象向下转型继承的作用如果没有继承机制是怎么样的?有以下两个类,分别是Student、Teacher,它们的实现类如下:/** * 老师类 封装了姓名、年龄 * * @author Administrator * */public class Teacher { private String name;原创 2022-02-13 20:10:17 · 320 阅读 · 0 评论 -
Java面向对象_15 super关键字
supersuper在继承构造函数中定义和作用super在继承构造函数中定义和作用● 在继承中子类的构造函数必须依赖父类提供的构造函数● super(参数列表)访问父类的构造函数● super调用父类的构造函数, 必须在构造函数的第一行......原创 2022-02-14 10:03:49 · 368 阅读 · 0 评论 -
Java面向对象_16 方法重写
方法重写子类和父类同名方法子类和父类static修饰的同名方法动态绑定和解耦合同名变量和方法重写的问题方法重载和方法重写的区别和应用子类和父类同名方法子类和父类同名方法,即方法重写前提:需要有继承关系,即在子类重写父类的方法方法重写表现:方法名必须相同参数列表必须相同返回值类型必须相同修饰符:范围可以扩大或相同,但是不能缩小 public > protected > defaultpublic class Animal { protected void eat() {原创 2022-02-16 09:57:17 · 192 阅读 · 0 评论 -
Java面向对象_17 final关键字
finalfinal修饰变量final修饰方法final修饰类final修饰变量final关键字修饰的变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改final关键字修饰的变量,如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象final修饰的变量都是常量final可以修饰局部变量final修饰方法final修饰的成员方法不能被子类重写;当父类的方法为final时,子类不能与父类有方法名、参数类型、参数个数及参数顺序都一样的方法。父类方法为priv原创 2022-02-19 18:55:44 · 305 阅读 · 0 评论 -
Java面向对象_18 抽象类
抽象类什么是抽象类抽象类的作用抽象类的设计和场景什么是抽象类为什么要引入抽象类呢?动物Animal都有自己的行为,小鸟和老虎继承了动物的行为,但小鸟和老虎的行动方式不一样。这样在动物类中就不能给出行动的具体实现!于是我们引入没有实现的抽象方法。什么是抽象类?使用abstract关键字修饰的方法叫做抽象方法,抽象方法没有方法体。当一个类中包含了抽象方法,那么该类也应该使用abstract关键字来修饰,这种使用abstract关键字修饰的类就是抽象类。抽象类及抽象方法的定义[修饰符] abstra原创 2022-02-20 21:34:19 · 253 阅读 · 0 评论 -
Java面向对象_19 接口
interface接口的定义接口的作用接口的特性接口的定义为什么需要接口?我们之前的类都是一个子类只能继承一个父类,并不能多继承,或者说一个儿子不能有多个爸爸。对于多继承,要再强调一下,Java8之后是没有多继承的这个概念的,这是一个误区。而对于像C++那样多继承,Java8可以实现多个接口。什么是接口?现在来谈谈接口是什么,接口就是某个事物对外提供的一些功能的声明,在Java代码中其实就是抽象方法。我们可以利用接口实现多态,同时接口也弥补了Java只能单继承的缺陷。使用interface关键字原创 2022-02-24 21:23:39 · 405 阅读 · 0 评论 -
Java面向对象_20 包机制
package包的定义import导包Java常用包jar包访问权限控制包的定义在面向对象的编程中,我们定义类名是不可以重名的,那么应当如何存放两个或者说多个同名的类而不冲突?这个时候我们可以引入包,并且包的方式还易于查找和管理。使用包应当使用package关键字。对于包的命名:包名应由小写字母组成,不能以圆点开头或结尾package mypackage;包名之前最好加上唯一的前缀,通常使用组织倒置的网络域名,像这样:package net.javagroup.mypackage;下原创 2022-03-02 10:37:24 · 250 阅读 · 0 评论 -
Java面向对象_21 内部类
内部类什么是内部类?成员内部类方法内部类静态内部类匿名内部类小提示:对于内部类的学习,其实就是理清代码块的作用域,要以这个逻辑思考哦 ~什么是内部类?在Java中,允许在一个类的内部定义类,这样的类称作内部类,这个内部类所在的类称作外部类。public class InnerClassDemo { //定义在类中的类 class Inner{ //Inner是InnerClassDemo的内部类 }}成员内部类在一个类中除了可以定义成员变量、成员方法原创 2022-03-05 10:15:51 · 179 阅读 · 0 评论 -
Java面向对象_22 函数式编程、Lambda、方法引用
面向函数式编程函数式编程Lambda表达式lambda的使用函数式接口Lambda应用举例方法引用类名引用静态方法对象名引用方法构造方法引用类名引用普通方法在之前的匿名内部类以及“使猪飞”的例子都是函数式编程,这篇文章将详细介绍什么是函数式编程、lambda表达式。这是本文章代码使用的例子:这是一个名为User的实体类,有构造器,重写了toString(),以及run()和say()方法用于举例。public class User { private String name; pr原创 2022-03-08 20:14:58 · 389 阅读 · 0 评论 -
Java面向对象_23 枚举
Enumeration Type枚举类型定义枚举的使用枚举的应用场景枚举类型定义枚举其实就是有固定实例个数的类。当我们定义枚举类型时,其实就是定义了一个类,只不过很多细节都由编译器自动补齐了。定义枚举类型时使用enum关键字,定义的枚举类型默认继承于java.lang.Enum类。每个枚举成员都是这个枚举类型的实例,它们都默认由public static final修饰,也就是说,这些成员都是常量,无法被修改,可以通过 类名.成员名的方式直接使用。所以,枚举的定义为:枚举类型(enum type原创 2022-03-10 19:56:45 · 257 阅读 · 0 评论 -
Java面向对象_24 包装类
Wrapper Class基本数据类型包装类型自动拆箱与自动装箱基本数据类型、包装类及字符串之间的转换自动拆装箱带来的问题基本数据类型在谈到包装类之前,应该先熟悉基本数据类型,它们主要分为以下8种:字符类型 char 布尔类型 boolean 数值类型 byte、short、int、long、float、double。数值类型又可以分为整数类型 byte、short、int、long 和浮点数类型 float、double。如何你对这些数据类型感到陌生,应该先巩固一下基础,因为这太常用了!原创 2022-03-14 11:43:58 · 786 阅读 · 0 评论 -
Java面向对象_25 反射
Reflection 什么是反射反射的使用常用API反射创建对象的三种方式反射执行构造函数使用反射给属性赋值反射调用方法反射的优缺点优点缺点反射的应用什么是反射在学习反射前,我们应该先回顾类的加载过程:.java 源代码 编译-> .class字节码文件 ->运行 类加载器 jvm官方解释:Reflection enables Java code to discover information about the fields, methods and constructors o原创 2022-03-15 22:01:43 · 319 阅读 · 0 评论 -
Java面向对象_26 注解
Annotation什么是注解常用注解元注解自定义注解什么是注解注解用来给类声明附加额外信息,可以标注在类、字段、方法等上面,编译器、JVM以及开发人员等都可以通过反射拿到注解信息,进而做一些相关处理(SpringBoot 全部都是采用注解化)。常用注解注解说明@Override只能标注在子类覆盖父类的方法上面,有提示强制重写方法的作用@Deprecated标注在过时的方法或类上面,有提示的作用,文档中会显示删除线@SuppressWarnings(“unche原创 2022-03-18 10:08:02 · 173 阅读 · 0 评论 -
Java面向对象_27 异常
Exception什么是异常?Java中有哪些异常?异常处理 try-catch处理多个异常异常处理 finallythrowsthrow什么是异常?异常就是指程序执行过程中遇到的非正常情况,导致JVM非正常停止。Java中有哪些异常?Java中的异常有两个体系:Error:error是严重的错误问题,也就是无法处理的错误,只能事先避免,比如内存溢出;Exception:Exception是我们最常遇到的,java.lang.Exception被称作异常类,它表示程序本身可以处理的问题。原创 2022-03-19 14:15:56 · 293 阅读 · 0 评论 -
Java面向对象_28 对象的克隆
Clone对象的克隆浅克隆与深克隆克隆一个集合以及集合中包含的对象对象的克隆在谈本次内容前,先来聊聊什么是克隆。生物学上的克隆,是把某个生物基因完全提取,利用此基因就能复制出一个与原生物生理结构一致的新的生命,这个新的生命是个实体,它具备原生物的所有特性。而在面向对象中,假如有一个对象,现在我想要一个与原对象一摸一样的对象当作备胎,那么在堆内存中一步到位得new一个与对象一摸一样对象,就是对象的克隆,也就是对象的复制。我们在使用基本数据类型的对象时,可以直接用,也不需要new,假如我需要两个boo原创 2022-03-21 09:45:12 · 189 阅读 · 0 评论 -
Java面向对象_29 动态代理
动态代理静态代理动态代理使用JDK实现动态代理静态代理了解了代理模式原创 2022-04-19 14:15:56 · 257 阅读 · 0 评论 -
Java面向对象_30 泛型
要注意,泛型参数一定是类类型,不能是基本数据类型;泛型类不能继承Throwable及其子类。在谈到泛型应用时,我个人遇到使用泛型的场景大都是与集合指定类型相关,因此我有个建议就是查看Java的ArrayList、HashMap等集合的源码,看看他们是怎么写的。上面的关于泛型的抽象概念你看起来可能一知半解,不是很清晰,不过没关系,下面的3个例子认真看着,要注意注释的内容,它能帮助你快速掌握泛型的使用。首先我们来谈谈泛型是如何使用的,我拿ArrayList集合举例。...............原创 2022-06-13 18:16:48 · 111 阅读 · 0 评论 -
Java面向对象_31 正则表达式的使用
正则表达式(Regular Expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串。除了这种方式验证,字符串String类自身也有是支持正则表达式的API:正则表达式复杂点的写法:这里有两个连续的[ ],可以拼接表示允许的范围,后面的{ }中的量词表示字符的范围。比如,例子中验证前7位范围是否都在a-z,后面的8-15位的范围是否都在A-z或0-9内。正则表达式还支持字符串的截取:该例就表示字符原创 2022-06-17 20:08:40 · 156 阅读 · 0 评论