Day5
1、面向对象思想
1.1 、概述
面向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去操作实现。
面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。
三大基本特征:封装、继承、多态、(抽象)
1.2 、类和对象
类:是一组相关属性和行为的集合。类是对一事物的描述,是抽象的。
- 属性:事物的状态信息
- 行为:事物能够做什么
**对象:**是类事物的具体体现,对象是一类事物的实例,是具体的。
类与对象的关系:类是对象的模板,对象是类的实体
1.3、类的定义
格式:
public class ClassName {
//成员变量
//成员方法
}
**定义类:**就是定义类的成员,包括成员变量和成员方法
**成员变量:**和以前定义的变量一样,只不过位置发生了变化,在类中,方法外
成员方法:和以前定义方法几乎一样,只不过把static去掉
public class Student {
//成员变量
String username; //姓名
int age; //年龄
//成员方法
public void study(){
System.out.println("学习的一个类");
}
public void eat(){
System.out.println("吃饭!");
}
}
1.4、使用对象
创建对象: 类名 对象名 = new 类名();
访问类中成员变量和成员方法: 对象名.成员变量 对象名.成员方法
public class Demo {
public static void main(String[] args) {
//创建对象的方法
Student student=new Student();
student.username="张三";
student.age=30;
student.eat();
student.study();
System.out.println(student.username);
Student student1=new Student();
System.out.println(student1.username);
}
}
1.5、成员变量默认值
整型:byte, short, int, long 0
浮点型:float,double 0.0
字符型(char) : ‘/u0000’
布尔类型:false
引用类型:数组, 接口, 类 null
还的不理解
-
两个对象使用同一个方法 在栈内存中运行方法,遵循"先进后出的原则"
2. 两个对象名称指向同一个对象的内存 创建多个对象时,方法信息不能每次都存放在堆内存中,因为方法信息是一样的,所以只需要在堆内存的对象中存储方法的标识即可,在方法区中,存放我们具体的方法信息。 **使用对象类型作为方法的参数** 当一个对象作为参数,传递到方法当中时,实际上传递进去的是对象的地址值。 **使用对象类型作为方法的返回值** 当使用一个对象类型作为方法的返回值时:返回值其实就是对象的地址值。
1.6、成员变量和局部变量的区别
在类中的位置不同:
成员变量:在类中、方法外
局部变量:在方法中或者方法声明上
作用范围也不一样:
成员变量:整个类通用
局部变量:在方法中
初始化不同:
成员变量:有默认值
局部变量:没有默认值(直接输出会报错),必须先定义,赋值,再使用
在内存中的位置不同:
成员变量:堆内存
局部变量:栈内存
生命周期不同:
成员变量:随着对象的创建而诞生,随着对象被垃圾回收而消失
局部变量:随着方法进栈而诞生,随着方法出栈而消失
2、封装
封装就是将一些细节信息隐藏起来,对于外界不可见。
在Java中的体现:
- 方法就是一种封装
- 关键字private也是一种封装
原则:
把我们类中的属性隐藏起来,如果要访问我们的某个属性,提供公共方法让他访问。
封装步骤:
-
使用private(私有的) 修饰属性
-
间接访问private成员变量,就是定义一对Getter/Setter方法
对于boolean类型,调用时方法是调用 对象名.is方法名()
封装的操作----------private修饰符
- private是一个权限修饰符,代表最小权限
- 可以修饰成员变量,也可以修饰方法
- 被private修饰后的成员变量和成员方法,只能在本类中使用
this含义
this代表所在类的当前对象的引用,及对象自己的引用
在重名的情况下,起到区分的效果