一、java是一门完全面向对象的的语言
1)面向对象概述
类:构造对象的模板,例如学生可以定义为学生类,所有老师可以定义为教师类,所有的对象都有一个父类,那就是Object
对象:对象是类的一个实例,有属性和动作。
构造函数:(在构造对象时创建对象时,调用的函数,用来初始化对象)
1) 名字与类名相同
2) 不用定义返回值,也没有具体返回值(可以有人trturn,代表结束函数)
3) 可以有0、1或多个参数
4) 伴随new操作符一起被调用
例如,张三是一个学生对象,它的属性有:姓名、年龄;动作有:学习、吃饭
下面定义一个学生类,并实例化一个学生类,如下:
2)关于“封装”概念
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式,对对象的使用者隐藏了数据实现的方式,实现封装的关键在于不能让类中的方法直接地访问其他类的实例域(对象中的数据)
封装的好处:
- 隐藏实现细节,提供公共的访问方式
- 提高了代码的复用性
- 提高安全性。
封装原则:将不需要对外提供的内容都隐藏起来,把属性隐藏,提供公共方法对其访问
3)面向对象中的使用的一些方法
- 如何使用对象? 创建对象并使用 格式:类名 对象名 = new 类名();
- 如何使用成员变量呢? 格式:对象名.变量名
- 如何使用成员方法呢? 格式:对象名.方法名(...)
4)成员变量和局部变量的区别
1) 在类中的位置不同
- 成员变量:在类中方法外
- 局部变量:在方法定义中或者方法声明上
2) 在内存中的位置不同
- 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
- 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
3) 生命周期不同
- 成员变量:随着对象的创建而存在,随着对象的消失而消失
- 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
4) 初始化值不同
- 成员变量:有默认初始化值
- 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
注意事项:
1) 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
2) 基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
3) 引用数据类型变量包括哪些:数组,类,接口,枚举
5)静态变量和成员变量的区别
1)所属不同
- 静态变量属于类,所以也称为为类变量
- 成员变量属于对象,所以也称为实例变量(对象变量)
2)内存中位置不同
- 静态变量存储于方法区的静态区
- 成员变量存储于堆内存
3)内存出现时间不同
- 静态变量随着类的加载而加载,随着类的消失而消失
- 成员变量随着对象的创建而存在,随着对象的消失而消失
4)调用不同
- 静态变量可以通过类名调用,也可以通过对象调用
- 成员变量只能通过对象名调用
5)别名不一样
成员变量:实例变量
静态变量:类变量
注意事项:
1) 静态方法只能访问静态成员(非静态方法既可以访问静态,又可以访问非静态)
2) 静态方法不可以使用this或super关键字(静态是随着类的加载而加载,this和super是随着对象的创建而存在。
静态比对象先存在。)
3) 引用数据类型变量包括哪些:数组,类,接口,枚举
6)static关键字的特点
a:随着类的加载而加载
b:优先于对象存在
c:被类的所有对象共享
* 举例:咱们班级的学生应该共用同一个班级编号。
* 其实这个特点也是在告诉我们什么时候使用静态?
* 如果某个成员变量是被所有对象共享的,那么它就应该定义为静态的。
* 举例:
* 饮水机(用静态修饰)
* 水杯(不能用静态修饰)
* 共性用静态,特性用非静态
* d:可以通过类名调用
* 其实它本身也可以通过对象名调用。
* 推荐使用类名调用。
* 静态修饰的内容一般我们称其为:与类相关的,类成员