*面向对象基础:
类和对象:
对象(具体的):万物皆对象,客观存在的事物皆为对象,实体
面向对象:人关注对象的动作,*即在计算机就是人关注事物信息的动作
事物信息:就是类
类(抽象的):是对现实生活中一类具有共同属性和行为的事物的抽象
特点:
①类是对象的数据类型
②类是具有相同属性和行为的一组对象的集合
对象的属性:
属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值
对象的行为:
行为:对象能够执行的操作
*总结:类是对象的抽象,对象是类的实体
类的定义:
*类的重要性:是Java程序的基本组成单位
类的组成:属性和行为
①属性:在类中通过成员变量来体现(类中方法外的变量)
成员变量格式:数据类型 变量名;
②行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
public 数据类型 方法名(){方法体}
对象的使用:
①创建对象
格式:类名 对象名 = new 类名();
②使用对象
1.使用成员变量(访问方式):
格式:对象名 .成员变量名
2.使用成员方法:
格式:对象名.方法名()
注意:使用对象在测试类要有个主方法main方法,同时成员变量都具有默认值,
同数组默认值规则。
直接输出对象名结果是地址值,成员方法是进入栈内存的。
案例:学生
*对象内存图:
①单个对象
②多个对象
③多个对象指向相同(第四天方法参数传递的引用类型)
成员变量和局部变量:
成员变量:类中方法外的变量
内存位置:堆内存
生命周期:随着对象的存在而存在,随着对象的消失而消失
初始化值:有默认的初始化值
局部变量:方法中的变量(包括在方法括号里面的)
内存位置:栈内存
生命周期:随着方法的调用而存在,随着方法调用完毕而消失。
初始化值:没有默认的初始化值,必须先定义,赋值,才能使用。
*封装:
*小知识点:
对象名.成员变量名的访问方式会有安全隐患,为了防止外界直接访问成员变量值,用private
*private(关键字):
①是一个权限修饰符
②可以修饰成员(成员变量和成员方法)
②作用是保护成员不被别的类(直接)使用,被private修饰的成员,
*只在本类中才能访问
针对private修饰的成员变量,如果需要被其他类视同,提供相应的操作
①提供 get变量名() 方法,用于获取成员变量的值,方法用public修饰
②提供 set变量名(参数) 方法,用于设置(改变)成员变量的值,方法用public修饰
注意:变量名首字母要大写,同时可以再这两个方法内写一些条件判断语句(if,switch等)
默认值要注意
*this(关键字):
因为在方法中的变量,如果有与方法外的变量名相同的变量,则就近原则都是形参,即局部变量
此时如果要调用成员变量则就是this.name(成员变量)
格式:this.变量名1 = 变量名1;
①this修饰的变量用于指代成员变量
②方法中没有形参,若用成员变量名,则也是成员变量
③用于解决局部变量隐藏成员变量
④this代表所在类的对象引用
*注意:方法被哪个对象调用,this就代表哪个对象(可以理解为this 等于 对象名,然后变成类内部的改变操作)
正文:
概述:
1.是 面向对象 三大 特征 之一(封装,继承,多态)。
2.是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是 隐藏
在对象内部的,外界是无法直接操作的。
原则:
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供
的方法来实现对隐藏信息的操作和访问。
好处:
①通过方法来控制成员变量的操作,提高代码的安全性
②把代码用方法进行封装,提高了代码的复用性
总结:安全性、复用性
构造方法:
Student s = new Student();中的new后面的Student()是一个方法
作用:创建对象
格式:
public class 类名{
修饰符 类名(参数){
}
}
注意:存在于要创造的对象的类里面
*功能:主要是完成对象数据的初始化
*注意事项:
①当类里面没写构造方法,系统会默认给(调用)一个无参构造方法
②当类里面有一个(无参或有参)构造方法,则系统不再提供默认的无参构造方法
③可以有构造方法的重载,即有参和无参
案例:标准类