面向对象
面向过程:当需要实现一个功能时,每个具体的步骤都得自己写,亲力亲为
面向对象:当需要实现一个功能时,不关心具体的步骤,找一个已经具有该功能的东西替我做事
示例代码:
import java.util.Arrays;
public class a05_面向对象 {
public static void main(String[] args) {
int[] array01 = {0,1,5,4,6};
// 使用两种不一样的方法来打印数组
// 使用面向过程
System.out.print("[");
for (int i = 0; i < array01.length; i++) {
if (i == array01.length - 1){
System.out.println(array01[i] + "]");
}else {
System.out.print(array01[i] + ", ");
}
}
System.out.println("-------------------------------------------");
// 使用面向对象
// 找一个JDK给我们提供好的类
// 里面有toString方法直接提供这个效果
System.out.println(Arrays.toString(array01));
}
}
1、介绍
a)面向过程强调的是步骤,面向对象强调的是对象
b)面向对象三大基本特征:封装、继承和多态
2、类和对象的关系
a)类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物
b)属性(成员变量):就是该事物的状态信息 | 行为(成员方法):就是该事务能够做什么
c)类是对一类事物的描述,是抽象的 | 对象是一类事物的实例,是具体的
d)类是对象的模板。对象是类的实体
例如下图,类就相当于设计图,对象相当于真正的手机
e)注意事项:
1.成员变量是直接定义在类当中,在方法外
2.成员方法不要写static关键字
e)过程
1.导包:指出需要的类在什么位置
import 包名称.类名称
import java.util.Arrays;
对于和当前类属于同一个包的情况,可以省略到导包语句不写
2.创建
格式:类名称 对象名 = new 类名称();
Student stu = new Student();
3.使用
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名(参数)
4.局部变量和成员变量的区别
⚪定义的位置不一样
局部变量定义在方法内部
成员变量定义在方法外部,直接写在类当中
⚪作用范围不一样
局部变量只有在方法当中才可以用,出了方法就不能用了
成员变量则是在整个类都可以使用
⚪默认值不一样,
局部变量没有默认值得自己赋值
全局变量没有赋值的话会有默认值
⚪内存位置不一样
局部变量位于栈内存
成员变量位于堆内存
⚪生命周期不一样
局部变量随着方法进栈诞生,出栈消失
成员变量随着对象创建诞生,对象被垃圾回收而消失
⚪方法的参数也是局部变量
相关代码:
//a05_面向对象.java
public static void main(String[] args) {
// 导包
a05_面向对象01 stu = new a05_面向对象01();
// 使用成员变量
System.out.println("未赋值↓");
System.out.println(stu.name);
System.out.println(stu.age);
stu.age = 18;
stu.name = "jack";
System.out.println("赋值后↓");
System.out.println(stu.name);
System.out.println(stu.age);
// 使用成员方法
stu.eat();
stu.sleep();
stu.study();
}
//a05_面向对象01.java
public class a05_面向对象01 {
// 成员变量(全局变量)
String name;
int age;
// 成员方法
public void study(){
System.out.println("学习");
}
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
}
3、使用对象时内存空间的变化
介绍视频:一个对象的内存图,两个对象使用同一个方法的内存图,两个引用指向同一个对象的内存图
4、使用对象类型作为方法参数
内存变化过程:使用对象类型作为方法的参数内存图
相关代码:
//a05_面向对象.java
public static void main(String[] args) {
a05_面向对象01 stu01 = new a05_面向对象01();
stu01.name = "lucy";
stu01.age = 18;
idea01(stu01);
}
public static void idea01(a05_面向对象01 parma) {
System.out.println(parma.name);
System.out.println(parma.age);
parma.study();
parma.sleep();
parma.eat();
}
//a05_面向对象01.java
public class a05_面向对象01 {
// 成员变量(全局变量)
String name;
int age;
// 成员方法
public void study(){
System.out.println("学习");
}
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
}