Java 面向对象
程序员文章站
2022-05-25 20:42:27
...
面向对象是什么?
问题1:如何将大象装到冰箱里?->打开 冰箱,放大象,关冰箱。
面向过程:强调的是行为和功能把大象放到冰箱里(打开 存储 关闭)强调动作
面向对象: 冰箱的行为(开关存储)看到的是冰箱 强调对象
问题2:为什么要使用对象?
把复杂的东西简单化~我们不需要再自己手动去操作这件事,而是通过对象来帮我们完成,我们是指挥者。
面向对象的特征
- 封装
- 继承
- 多态
类和对象中的关系
类:就是对现实生活中事物的描述(而描述事物,就是定义属性和行为,属性和行为共同成为类中的成员(成员变量和成员方法)) 就是class定义的类
对象:就是这类事物,实实在在存在的个体 实体在堆内存中用new建立的实体
现实生活中的对象,想要描述就是提取对象*性内容,对具体的抽象描述时,对这些对象的共性:年龄、姓名、国家
Person是类,p则是对象。
class Person{
private String name;
private int age;
private static String country = "cn";
}
public class PersonDemo {
public static void main(String[] args) {
Person p = new Person();
}
}
成员变量和局部变量
- 作用范围:
成员变量作用于整个类中,局部变量作用于函数中或者语句中 - 在内存中位置:
成员变量,在堆内存中,因为对象的存在,才在内存中存在
局部变量,存在在栈内存中
匿名对象(没名字的对象)
匿名对象调用类的属性没有意义,但是调用类中的方法是有意义的。通常使用场景是:
- 当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化
- 可以将匿名对象作为实际参数进行传递
需求:汽车修配厂,对汽车进行改装,将送来的车修改成黑车,三个轮胎
主函数里的q赋值给show的c变量,栈内存里只有一个对象。
匿名对象可以作为参数作为实际参数进行传递,当show调用结束则在堆内存中变成垃圾,等待回收。
两种方法在内存中的区别:
第一种,为图中下方位置,他通过赋值让q也有了指向栈内存的对象,
第二种,直接是匿名对象,通过调用show时,将new Car()传给show的c,也就对象内存地址值赋值给C
下一篇: Java 面向对象