Java-类与对象(上)

什么是面向对象
Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。
面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。
以面向对象方式来进行处理,就不关注过程,通过对象之间的交互来完成的


类定义和使用
在这里插入图片描述
对洗衣机简单的描述,该过程称为对洗衣机对象(实体)进行抽象(对一个复杂事物的重新认知)


类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干啥),描述完成后计算机就可以识别了


类的定义格式
在java中定义类时需要用到class关键字,具体语法如下
// 创建类
class ClassName{
field; // 字段(属性) 或者 成员变量
method; // 行为 或者 成员方法
}
class为定义类的关键字,ClassName为类的名字,{}中为类的主体


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上述在一个文件中出现两个public类,是不正确的

在这里插入图片描述
注意事项
类名注意采用大驼峰定义
成员前写法统一为public,后面会详细解释
此处写的方法不带 static 关键字. 后面会详细解释


改变类的名字
在这里插入图片描述
在这里插入图片描述


定义一个狗类
在这里插入图片描述
定义一个学生类
在这里插入图片描述注意事项:

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

类的实例化

用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意事项
new 关键字用于创建一个对象的实例.
使用 . 来访问对象中的属性和方法.
同一个类可以创建对个实例.


类和对象的说明
1.类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员
2. 类是一种自定义的类型,可以用来定义变量.
3. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量


this引用
两个疑问
在这里插入图片描述
1.形参名不小心与成员变量名相同
在这里插入图片描述
2. 2个对象都在调用setDate和printDate函数,但是这两个函数中没有任何有关对象的说明,setDate和printDate函数如何知道打印的是那个对象的数据呢?


this引用指向当前对象(成员方法运行时调用该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该
引用去访问。

上述代码的正确写法如下
在这里插入图片描述
可以看到输出的结果也是正确的
在这里插入图片描述
this引用在形参中的位置
在这里插入图片描述


this引用的特性

  1. this的类型:对应类类型引用,即哪个对象调用就是哪个对象的引用类型
  2. this只能在"成员方法"中使用
  3. 在"成员方法"中,this只能引用当前对象,不能再引用其他对象
  4. this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接收
    在这里插入图片描述

对象的构造及初始化
在这里插入图片描述
在这里插入图片描述
局部变量必须要初始化才能使用,为什么字段声明之后没有给值依然可以使用?
在这里插入图片描述


构造方法
在这里插入图片描述
构造方法(也称为构造器)是一个特殊的成员方法,名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


构造的特性
5. 名字必须与类名相同
6. 没有返回值类型,设置为void也不行
7. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次
8. 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)
在这里插入图片描述
9. 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的。
在这里插入图片描述
一旦用户定义,编译器则不再生成。
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


  1. 构造方法中,可以通过this调用其他构造方法来简化代码
    在这里插入图片描述
    执行顺序
    在这里插入图片描述
    在这里插入图片描述
    this的三种用法
    在这里插入图片描述
    this(…)必须是构造方法中第一条语句
    不能形成环
    在这里插入图片描述

  1. 绝大多数情况下使用public来修饰,特殊场景下会被private修饰

默认初始化
在这里插入图片描述


new 关键字背后所发生的一些事情

Date d = new Date(2021,6,9);
在程序层面只是简单的一条语句,在JVM层面需要做好多事情,下面先提到两条:
1.为对象分配内存空间
2.初始化所分配的空间
即:对象空间被申请好之后,对象中包含的成员已经设置好了初始值,比如:
在这里插入图片描述


就地初始化
在声明成员变量时,就直接给出了初始值。
在这里插入图片描述


封装的概念
面向对象程序三大特性:封装、继承、多态
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互
在这里插入图片描述


包的概念
为了更好的管理类,把多个类收集在一起成为一组,称为软件包。
包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,比如:一个包中的类不想被其他包中的类使用。
包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可。
在这里插入图片描述


导入包中的类
例如Date类:可以使用 java.util.Date 导入 java.util 这个包中的 Date类.
在这里插入图片描述
但是这种写法比较麻烦一些, 可以使用 import语句导入包
在这里插入图片描述


如果需要使用 java.util 中的其他类, 可以使用 import java.util.*
在这里插入图片描述
在这里插入图片描述
但是我们更建议显式的指定要导入的类名. 否则还是容易出现冲突的情况
在这里插入图片描述
util 和 sql 中都存在一个 Date 这样的类, 此时就会出现歧义, 编译出错
在这种情况下需要使用完整的类名
在这里插入图片描述
静态导入
在这里插入图片描述



可以使用import static导入包中静态的方法和字段 ,静态导入的方式写起来更方便一些。
普通的导入
在这里插入图片描述


自定义包
基本规则
包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.bit.demo1 ).
包名要和代码路径相匹配. 例如创建 com.bit.demo1 的包, 那么会存在一个对应的路径 com/bit/demo1 来存储代码.
如果一个类没有 package 语句, 则该类被放到一个默认包中.如scr包


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
需要引入Test所在的包
在这里插入图片描述


包的访问权限控制举例
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
注意:如果去掉Computer类之前的public修饰符,代码也会编译失败
如下
在这里插入图片描述


常见的包

  1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入。
  2. java.net:进行网络编程开发包。
  3. java.sql:进行数据库开发的支持包。
  4. java.util:是java提供的工具程序包。(集合类等) 非常重要
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值