引言
java是一门存面向对象的语言,在面向对象的语言中一切皆是对象,主要是依赖与对象的交互实现目的,比如你要买个手机,在面向过程的语言中,你会为了买到喜欢的搜集去搜集各种资料,cup,屏幕,屏幕刷新率等等,而在面向对象的语言中,你只需要把你想要的手机的特点给一个人说,让后这个人就会给你买到你想要的手机,而不会有自己去搜集资料这个过程,而这个人也就是我们所说的对象
认识类
类的定义需要用的class关键字,类的基本形式为
一个类由 成员变量 和 成员方法俩部分组成 dog就是类的名字
类的实例化
用类创建对象的过程就叫做实例化
当我们创建好了一个类,那要怎么使用呢
对象是储存在堆区的,这里new的意思的以类Dog为模板在堆区上开辟个一个叫做hh的空间,将类的成员变量储存在堆区上,而类方法中的创建局部变量储存在栈上,可以使用 . 这个操作符号访问,hh.setNname()也就是访问Dog里面的setNmame这个方法,这里hh就是一个对象
类是一种自定义类型,用来描述一个变量(dog)
类就像是吧一个模板一样的东西,只有当他实例化对象的时候才会在内存上由实际的空间,才可以储存实际的信息
可以把一个类当作是一张蓝图,你可以用一张蓝图创建许多个建筑,也可以用一个类实例化许多个对象
this引用
当方法名中的变量和成员变量名字相同时,在调用时会优先 使用方法的变量,要特别指出使用类成员变量的话就要使用this关键字
这里是局部变量age,给age自己赋值,而不是给成员变量赋值,所以输出为0 (为什么为0一会看狗构造方法)
this.xx就是特别引用类里的成员 或方法
this的特性
只能在成员方法中引用
在成员方法中只能应用当前对象(hh)
哪个对象调用就是哪个对象的引用类型
对象的构造和初始化
如何初始化对象
java中的局部变量都是要初始化才能正常使用的,而为什么在字段中并没有初始化,那为什么也能正常使用吗,那是因为在创建对象时,会自动编译器会自动调用构造方法去初始化变量
构造方法
用来初始化成员变量
特征
和类名相同,不能由放回值,void也不能有,自会在对象的创建的时候调用一次,允许重载
若没有写构造方法,编译器会自动生成一个无参数的构造方法,将成员变量赋值为对应的0
允许重载,
可以使用this调用构造方法
this调用了 下面的那个构造方法 ,注意this必须写在第一句构造方法的第一句中
也不能形成上面调下面然后下面调上面的闭环
就地初始化
我们也可以在成员变创建时就给他赋值
封装
面向对象程序的3大特性:封装,继承,多态
封装,将数据和操作数据的方法进行结合,隐藏对象的属性和实现细节,仅对公开的接口来进行对对象的交互
用到4个关键字,private default(什么都不写) protected public
访问权限由小到大
这里要引入包的概念
在编译器中生成的一个包也就是在该目录下生成一个文件夹
在生成java文件的目录下能找到选项package
在book这个包下生成的java文件也就是放在book这个文件中
包的导入
import关键字
这个是Java自带的包 名字就直接是他们所在文件名字,在文件夹java中的util中的Date下
包的自定义
这个包叫做book,里面有个类叫hhh
如果book这个包中有很多个类,我们都要用,一条一条的导入太麻烦了,这时
就可以用到通配符 * 导入这个包中的所有类,
但这样如果有相同的类名就会出问题,这需要特别小心
private
只能在同一个包的同一个类里使用
也就是在同一个文件下,同一个类中,使用范围是最小的
当name被private修饰后不能在另一个类book中直接调用,而age的调用不受影响,那要如果要更改那么,就只有通过用public修饰的方法来间接赋值、
default
默认权限,在同一个文件下能直接访问
public
最大权限,不管是在哪里,只要是包含了这个包,就可以直接调用
在另一个包下,用import调用了这个包,创建对象后就能直接使用了
ed
就先写道着里,下一篇写static 代码块