欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 面向对象

程序员文章站 2022-05-25 20:42:27
...

面向对象是什么?

问题1:如何将大象装到冰箱里?->打开 冰箱,放大象,关冰箱。
面向过程:强调的是行为和功能把大象放到冰箱里(打开 存储 关闭)强调动作
面向对象: 冰箱的行为(开关存储)看到的是冰箱 强调对象

问题2:为什么要使用对象?
把复杂的东西简单化~我们不需要再自己手动去操作这件事,而是通过对象来帮我们完成,我们是指挥者。

面向对象的特征

  1. 封装
  2. 继承
  3. 多态

类和对象中的关系

类:就是对现实生活中事物的描述(而描述事物,就是定义属性和行为,属性和行为共同成为类中的成员(成员变量和成员方法)) 就是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();

	}
}

成员变量和局部变量

  1. 作用范围:
    成员变量作用于整个类中,局部变量作用于函数中或者语句中
  2. 在内存中位置:
    成员变量,在堆内存中,因为对象的存在,才在内存中存在
    局部变量,存在在栈内存中

匿名对象(没名字的对象)

匿名对象调用类的属性没有意义,但是调用类中的方法是有意义的。通常使用场景是:

  1. 当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化
  2. 可以将匿名对象作为实际参数进行传递

Java 面向对象
需求:汽车修配厂,对汽车进行改装,将送来的车修改成黑车,三个轮胎
主函数里的q赋值给show的c变量,栈内存里只有一个对象。
Java 面向对象

匿名对象可以作为参数作为实际参数进行传递,当show调用结束则在堆内存中变成垃圾,等待回收。
Java 面向对象
两种方法在内存中的区别:
第一种,为图中下方位置,他通过赋值让q也有了指向栈内存的对象,
第二种,直接是匿名对象,通过调用show时,将new Car()传给show的c,也就对象内存地址值赋值给C
Java 面向对象

相关标签: 面向对象