Java学习进阶知识篇

系列文章目录


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


前言

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

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 - 类和对象

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踢足球没有假动作

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值