【Java语言】类和对象

是用来对一个对象进行描述的,主要描述这个对象哪些属性。

类需要class进行修饰,一个Java文件中可以存在多个类,但是只能存在一个public类且必须与Java文件名相同。eg:有一个Demo.Java文件,在文件中只能存在public class Demo{},但是可以有多个class ...;下面是构建的一个学生类:

类的实例化

类的实例化 就是上面这个图中创建的s这个对象,用类类型创建对象的过程;

  • new 关键字用于创建一个对象的实例.
  • 使用 . 来访问对象中的属性和方法.
  • 同一个类可以创建对个实例.

类里面放着成员变量、成员方法、构造方法 等 ,都需要关键字进行修饰(public、private、default、protect);

  • 成员变量:描述类的属性;在没有赋值的情况下,它有默认的初值
  1. 整型默认为0,字符串(引用变量)默认null;
  2. 字符型默认"\u0000";
  3. 布尔类型默认flase;
  4. double型默认0.0,float型默认0.0f;
  • 成员方法:描述类的功能
  1. 方法中 的创建的变量都局部变量必须都要初始化否则会出现编译错误;
  • 构造方法: 特殊的成员方法
  1. 构造方法必须与类名一致,在创建实例对象是就调用了构造方法,并且在s这个对象中只能调用一次;
  2. 没有返回类型,void也不行;
  3. 参数没有强制要求根据实例对象的需求而实现,如果有参数可以用this调用;eg:this.a = a
  4. 构造方法可以多个同时出现,必须满足参数个数不一样 <==> 方法重载

this引用

this引用指向当前对象(成员方法运行时调用该成员方法的对象); eg:创建一个s,用s.调用构造方法则构造方法中的this.age = age中的this .age指的就是s这个实例对象的年龄,可以说this等价于s;

这样的目的就是万一存在实例对象的成员变量与构造方法的变量相同时,区分更好确定实例对象的成员变量 ;

封装

面向对象程序的三大类:封装、继承、多态。现在主要讲讲封装,封装就是将数据和操作数的方法进行结合·,隐藏对象的属性和方法。

在Java中,有自带包和自定义包;

如果使用自带包中的类就需要import语句导入包,可能有时候不同的包中会出现相同的类名,这时就需要详细的写出类名。

自定义包就是在文件最上方加上一个package语句指定代码在哪个包中,如果没有package语句就可能放在一个默认的包中(src);写包名的时候可以com.+域名+.+包名;创建完成后就可以新建类了;

在包中使用关键字也需要注意(前面说明关键字的用法)。

static

static不能修饰局部变量 (方法中的变量) ,能修饰成员变量、成员方法等;被static修饰的成员称为静态成员,静态成员都是类成员,不属于某个具体对象,所以在访问该静态成员时一般通过类名访问,也可以通过对象访问(就是一般不建议)。

静态成员变量

被static修饰的成员变量被称为静态成员变量;静态成员变量的特点:

  • 类创建,它也创建;静态成员变量是最先创建定义的,所以在方法中定义静态变量的话,在静态成员变量中找不到事先定义的变量,就会出现编译错误;
  • 静态成员变量是所有对象共享的,所以每个对象引用后都会保存其最终的值,而且它都是存放在方法区;
  • 当类结束时,它也随着类销毁而销毁;

静态方法

被static修饰的成员方法被称为静态方法;静态方法的特点:

  • 在静态方法中不能直接访问非静态成员变量,静态成员都是最先创建的,如果先前访问就会出现变量未定义的问题;
  • 静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用

代码块

使用 {} 定义的一段代码称为代码块。代码块分为普通、构造、静态和同步 代码块(暂时不说同步)。执行顺序先是静态代码块,然后构造代码块,载然后构造方法

普通代码块

直接用{}定义的代码块就是普通代码块;

构造代码块

一般用于初始化实例成员变量,也叫实例代码块; 只有在创建对象的时候才会使用;

静态代码块

使用static定义的代码块叫静态代码块; 静态代码块不管调用多少次对象就只能执行一次而且也是静态成员变量创建后就执行。总而言之静态成员都是最先创建的相比其他的代码块;

打印对象

打印对象可以不用通过成员方法调用,利用toString可以通过对象直接打印。

相关推荐
loop lee6 分钟前
JavaWeb - ⭐ AOP 面相切面编程原理及用户校验功能实战
java·开发语言
爱编程的鱼12 分钟前
Java基本查询(四)
java·开发语言·sql
全栈开发帅帅23 分钟前
基于springboot+vue实现的博物馆游客预约系统 (源码+L文+ppt)4-127
java·spring boot·后端
上海拔俗网络35 分钟前
“AI应急管理系统:未来城市安全的守护者
java·团队开发
天之涯上上42 分钟前
JAVA开发Erp时日志报错:SQL 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 ‘***‘ 中的标识列插入显式值
java·开发语言·sql
m0_7482370543 分钟前
web的五个Observer API
java·前端·javascript
南宫生1 小时前
力扣-数据结构-1【算法学习day.72】
java·数据结构·学习·算法·leetcode
aworkholic1 小时前
opencv sdk for java中提示无stiching模块接口的问题
java·c++·opencv·jni·opencv4android·stiching
爱学习的白杨树1 小时前
什么是MVCC?
java·服务器·数据库
it噩梦2 小时前
深度分析 es multi_match 中most_fields、best_fields、cross_fields区别
java·elasticsearch