Java类和对象

全篇纲领:Java一切皆对象!

类和对象是什么?

比如人是一个对象,汽车是一个对象,而类则是可以用来描述这个对象的特征!

例如,人有眼睛,鼻子,年龄这些属性,吃饭,喝水这些动作!

所以类有两个主要组成部分

1.成员变量(即属性)

2.成员方法(即行为)!

例如我们创建一个人的类以后,不同人只是属性的内容不同,但是拥有的属性和行为都基本一样。

但是有一个点我们要注意,就是每个类里面都可以有一个main方法,当你鼠标右键进行运行相应类的时候就可以运行main方法!

1. 一般一个文件当中只定义一个类
2. main 方法所在的类一般要使用 public 修饰 ( 注意: Eclipse 默认会在 public 修饰的类中找 main 方法 )
3. public 修饰的类必须要和文件名相同
4. 不要轻易去修改 public 修饰的类的名称,如果要修改,通过开发工具修改。

对象实例化

对象实例化就是new出来一个对象,相当于类就是一个蓝图,而new则是实实在在的创建出来的实际物体!
每个引用则是指向对应的类!

this引用(对当前对象的引用)

首先我们思考一个问题!
1. 形参名不小心与成员变量名相同
2.不同对象调用的时候怎么进行区分?
每个类都有一个隐藏的this引用!
this 引用指向当前对象 ( 成员方法运行时调用该成员方法的对象 ) ,在成员方法中所有成员变量的操作,都是通过该 引用去访问 。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
总结一下
1.this 的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
2. this 只能在 " 成员方法 " 中使用
3. " 成员方法 " 中, this 只能引用当前对象,不能再引用其他对象
4. this 成员方法 第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法 对象的引用传递给该成员方法,this 负责来接收
然后我们先来谈第一个特殊的成员函数

构造函数


函数名与类名相同,没有返回值,可以函数重载!
如果没有写构造函数,会有默认的无参构造函数!
(成员变量会有默认值,引用变量会是null,普通变量会是0,boolean会是false)
大家可能会疑问那什么时候调用构造函数呢?
new会自动开辟空间和调用对应的构造函数!

然后我们来学习面向对象语言的三大特性之一——封装

首先我们讲一下访问修饰限定符

Java 中主要通过类和访问权限来实现封装: 类可以将数据以及封装数据的方法结合在一起 ,更符合人类对事物的认 知,而访问权限用来控制方法或者字段能否直接在类外使用 Java 中提供了四种访问限定符:
public :可以理解为一个人的外貌特
default: 对于自己家族中 ( 同一个包中
private :只有自己知道,其他人都不知道
protected 主要是用在继承中,继承部分详细介绍
default 权限指:什么都不写时的默认权限
访问权限除了可以限定类中成员的可见性,也可以控制类的可见性
然后我们在这个地方也深入了解一下Java中包的概念!
在面向对象体系中,提出了一个软件包的概念,即: 为了更好的管理类,把多个类收集在一起成为一组,称为软件 。有点类似于目录。比如:为了更好的管理电脑中的歌曲,一种好的方式就是将相同属性的歌曲放在相同文件 下,也可以对某个文件夹下的音乐进行更详细的分类。
Java 中也引入了包, 包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式 ,比如:一 个包中的类不想被其他包中的类使用。包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在 不同的包中即可
Java 中已经提供了很多现成的类供我们使用 . 例如 Date 类:可以使用 java.util.Date 导入 java.util 这个包中的 Date 类
但是这种写法比较麻烦一些 , 可以 使用 import 语句导入包(本质就是具体到具体文件下的类)
如果需要使用 java.util 中的其他类 , 可以使用 import java.util.*(*是通配符,代表所有类)
可以使用 import static 导入包中静态的方法和字段。
大家可能会疑问,能不能自己创建包呢?
当然可以!(包名一般推荐小写)
然后创建包以后再在包下面创建类,以后就可以用这个包了!
然后我们再说一下 static 成员
static 修饰成员变量(不需要具体的类实例就可以访问和修改)
static 修饰的成员变量,称为静态成员变量 ,静态成员变量最大的特性: 不属于某个具体的对象,是所有对象所共 享的
【静态成员变量特性】
1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
3. 类变量存储在方法区当中
4. 生命周期伴随类的一生 ( 即:随类的加载而创建,随类的卸载而销毁 )
5.static只能修饰成员变量,不能修饰局部变量!(Java和c不同)
代码块
使用 {} 定义的一段代码称为代码块
根据代码块定义的位置以及关键字,又可分为以下四种:
普通代码块
构造块
静态块
同步代码块(后续讲解多线程部分再谈)
普通代码块:定义在方法中的代码块
构造代码块
构造块:定义在类中的代码块 ( 不加修饰符 ) 。也叫: 实例代码块 构造代码块一般用于初始化实例成员变量
静态代码块
使用 static 定义的代码块称为静态代码块。 一般用于初始化静态成员变量

 

静态代码块不管生成多少个对象,其只会执行一次
静态成员变量是类的属性,因此是在 JVM 加载类时开辟空间并初始化的
如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行 ( 合并 )
实例代码块只有在创建对象时才会执行
  • 22
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值