系列文章目录


提示:.......................

文章目录

  • 系列文章目录
  • 前言
  • 一、类和对象
    • 面向对象基本介绍
    • 类的基本使用属性
    • 构造方法和析构方法
    • 对象
  • 二、
  • 总结

前言

提示:这里可以添加本文要记录的大概内容:

Java面向对象编程的进阶知识


一、类和对象

面向对象基本介绍

在面向对象的世界里,世界万物即对象。对象分为两种一是静态对象(即属性),二是动态对象(方法、行为),比如一只鸟,静态对象就是指鸟的翅膀、重量、羽毛颜色等等,动态对象就是指鸟的飞行、走路、觅食、叫声等等
是一类事物的一个统称,对象是类实例化之后的一类,而整个类就是所有对象的统称、人类可以实例化出一个男人、女人;鸟类可以实例化出一个大雁、燕子、信鸽;图形类可以实例化出三角形、平行四边形、五角形。一个类抽象出来一个实体,然后通过这个实体来解决实际的问题。

封装:就是把对象的静态属性和动态属性进行一个打包就是封装

继承:比如要解决一个鸟南飞的问题,这里的鸟有各种各样的鸟,所以先定义一个鸟都共有的静态和动态属性,然后在定义其他的鸟,继承这个基本的鸟,这样可以代码的大量复用,极大的减少的时间。

多态:父类作用到子类上的一个特征,Java 实现多态有 3 个必要条件:继承、重写和向上转型
这个对于多态的理解讲的特别好

抽象类:要绘制一个图形,却没有说要绘制一个怎么样的图形,但也必须得写一个方法,所以这个时候就需要一个抽象类来解决这个问题。定义一个抽象类,然后写一个抽象方法,等明确知道绘制什么图形的时候,直接继承这个抽象方法,然后在子类中进行去实现即可

接口:从多个类中抽象出来的模板

类的基本使用属性

成员变量:是类中定义的变量,需要用权限修饰符进行修饰,一般有效范围在整个类中有效。private int a;
成员方法:在类中定义的方法 public getA(){return this.a;}
上面两个统称为类成员
局部变量:在成员方法内定义的变量属于局部变量,形参也是局部变量,一般局部变量在方法执行完毕后会销毁,局部变量可以和成员变量重名,一般用this指向。一般有效范围在方法体内有效。

static修饰的变量、常量和方法称为静态变量、常量、方法。
静态变量、静态方法:由static修饰的变量或方法,一般用于共享数据。例如:PI在多个类中都用的到,可以定义为一个静态的常量,在不同的类中调用即可,而且内存只占用一处。
引用:类型.静态成员名
注意:
1、不能将方法体内的变量定义为静态变量
2、…static{ //pass }…,当这段代码被执行,先执行static中的代码,且只执行一次。
3、在静态方法中不能使用this关键字,不能调用非静态方法

常量:不能变化改变的量
主方法:public static void main(String[] args){//方法体},程序的入口,并且一个字母都不能错,或者少写
注意:
1、主方法也是静态的,所以直接在主方法中调用其他方法,则该方法必须也是静态的
2、主方法没有返回值
3、主方法的形参为数组。其中args[0]~args[n]分别代表程序的第一个到第n个参数,可以使用args.length获取参数个数。

权限修饰符
private:只能在本类中可以使用
protected:可以在本类和子类还有同一个包下可以使用
public:全部公开可以使用(本类、子类、同包、其他包)

this关键字:1、区分类名 2、返回对象
如果多个变量名相同,可以用this来准确指向
public Book abc(){ return this; } 直接返回Book对象引用

构造方法和析构方法

构造方法:每次类实例化一个对象就会调用一次构造函数,可以简单的把构造函数理解为初始化对象
特点:
1、没有返回值
2、方法名和类名相同
3、调用时要注意类的方法是有参的还是无参的
注意:
1、如果没定义构造方法,类会默认生成一个无参无代码的构造方法
2、如果只定义了一个有参的构造方法,那实例化的时候也必须加上参数
3、如果定义了无参、一个参、两个参的构造方法,那实例化的时候写几个参数就会调用哪个构造方法

public 类名(//有参调用时也必须有参 //无参调用时也不可加参数)
{ //代码 }

析构方法:当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作

protected void finalize( )
{// finalization code here
}

对象

类只是去定义了一个模型,具体的去解决问题还是需要进行实例化对象。
对象对象
Test test = new Test(“a”);
test.test1 //访问对象中的变量
test.test2() //访问对象中的方法
特点:
1、每个都想都是相互独立的,对象名可以理解为酒店房间号,在内存中通过对象名具体的去取值存值。
2、每个对象都有自己的生命周期,在结束的时候自动被当作垃圾值被清理,且不能在被使用
3、因为实例化的对象之间是独立的,所有在不同的对象之间去进行赋值,对象之间完全不会相互影响

对象的引用
Book book = new Book();
book是Book的一个引用,通过book可以操作Book类的变量和方法。可以简单的把book理解为一个多指向的快捷方式。而book也可以说是Book的一个实例化对象。

对象的比较
一、== 指的是两个对象所引用的地址是否相等

二、equal() 是String类的一个方法,一般指的是两个方法所指的内容是否相等

对象的销毁
每个对象都有自己的生命周期,在生命周期结束的时候会自动被Java虚拟机视为垃圾,被销毁
一般有两种情况被视作垃圾
1、超出引用范围
2、将对象设为null

回收的三种方式
一般Java虚拟机销毁的都是由new修饰的对象才进行回收
finalise()通过protected()来进行修饰,防止外部去进行恶意修改
System.gc() 强制回收,类似于拨打120来进行回收

二、


总结

学习时间记录
2022.10.24 - 类和对象

Java学习进阶知识篇相关推荐

  1. Java工程师进阶知识完全扫盲, 太全了!!

    项目简介 本期介绍的开源项目名称叫做:advanced-java 中文名:互联网 Java 工程师进阶知识完全扫盲,该项目主要是为Java开发工程师提供进阶知识讲解,从而提升Java工程师技术与能力! ...

  2. [软考]系统架构设计师 备考经验分享(二) - 知识点学习+综合知识篇

    2021.12.20 更新下成绩 49,53,55 原文: 本篇对应备考计划中的1.2阶段: 相关分享: 备考计划篇:[软考]系统架构设计师 备考经验分享(一) - 备考计划篇 知识点学习+综合知识篇 ...

  3. Java工程师进阶知识(持续更新)

    生生不息,"折腾"不止:Java晋升指北,让天下没有难学的技术:视频教程资源共享,学习不难,坚持不难,坚持学习很难: >>>> 文章内容大部分来自小编的学习 ...

  4. 从.Net到Java学习第四篇——spring boot+redis

    从.Net到Java学习系列目录 "学习java已经十天,有时也怀念当初.net的经典,让这语言将你我相连,怀念你......"接上一篇,本篇使用到的框架redis.FastJSO ...

  5. Java学习(入门知识)

    Java学习 java入门学习当你们还在打完一局王者的时候,我就已经开始入门java了哈哈哈哈哈哈 这是好久之前总结的了,先试着发一发吧. 1.类变量 类变量也称为静态变量 静态变量随着类的创建而创建 ...

  6. java学习进阶之路

    一.下面是一个java学习路线图,以供参考 二.下面是java工作之路,以供参考: 三.下面给出阶段性细化需要掌握的技能: 1.第一阶段 2.第二阶段 3.第三阶段 4.第四阶段 5.第五阶段 四.更 ...

  7. JAVA学习基础知识(一)JDK的安装和配置及Java的发展历史

    前言 欢迎阅读本系列文章,本文主要内容为Java的发展历史,以及在电脑上如何配置Java环境.ps:这是第一次发布java语言的文章,若出现错误,望指正. 文章目录 前言 java的发展历史 Java ...

  8. java学习进阶之路,如果从一个菜鸟进阶成大神

    一.下面是一个java学习路线图,以供参考 二.下面是java工作之路,以供参考: 三.下面给出阶段性细化需要掌握的技能: 1.第一阶段 2.第二阶段 3.第三阶段 4.第四阶段 5.第五阶段 四.更 ...

  9. java学习--基础知识进阶第五天--API、 Object类 System类、日期相关类、包装类正则表达式...

    今日内容介绍 u  Object类 & System类 u  日期相关类 u  包装类&正则表达式 第1章 Object类 & System类 1.1 Object类 1.1. ...

最新文章

  1. TVM将深度学习模型编译为WebGL
  2. bootstrap使用总结
  3. SAP发票校验前收货后是否能更改物料价格
  4. flex基于svn协同开发
  5. mysql and 优化_MySQL 优化(六)
  6. python正则匹配表达式(1)
  7. linux httpd 内存,apache占用内存过高耗完内存?
  8. bzoj 1227 [SDOI2009]虔诚的墓主人
  9. python实例31[My Stock Info]
  10. Ubuntu 18.04 Server必须使用netplan命令配置IP地址
  11. 矩阵连乘 动态规划_利用动态规划解LeetCode第62题:不同路径
  12. 阿里云 centos7 tomcat 启动巨慢的解决方法(几分钟)
  13. Transformer结构详解
  14. Axure RP 8的用途和使用
  15. mysql事务锁死解决
  16. Python模拟用户自动登陆网易126邮箱
  17. 小米系统shell_分享自用小米手机ADB命令删除系统内置应用
  18. 数据库安全性和完整性考虑_您是否考虑过云安全性?
  19. 描述计算机内的存储单位及换算关系,计算机存储单位换算
  20. STK_GLTF模型

热门文章

  1. 直播app源码Python爬虫练习 爬取图片
  2. 好用的RSS阅读器-My RSS Reader
  3. OCFS,OCFS2,ASM,RAW 讨论主题合并帖(转)
  4. 图神经网络详解及其在交通预测方面的应用
  5. (十一) 跨平台修图软件GIMP及其批处理插件
  6. 牛客练习赛58 C.矩阵消除游戏
  7. 解决UHD620,630等集显运行Solidworks卡顿 (点击特征导致描边卡死)
  8. win7下装anaconda3
  9. 2022-2027年中国摄像头市场规模现状及投资规划建议报告
  10. Hisilicon Hi3536RBCV100 编解码处理器