1.面向对象简介
面向对象是以组件化的形式进行设计开发的,这样开发最大的好处就是重用。 (组件化:举个例子 就是把一个复杂的项目 拆开分成一个个小功能然后进行组合)面向对象的特征
- 封装性:用来保护内部的结构
- 继承性:在原用的功能上增加新的特性
- 多态性:某一个概念范围的满足
2.类与对象简介
类是对面的抽象,对象是类的实例
万物皆对象
比如说狗可以定义为狗类然后再定义狗类的属性方法,比如名字属性、毛发颜色属性,跑的方法。而对象可以实例出名字小黄,毛发颜色为棕色。则方法就是一条棕色的狗小黄,它在路上跑
3.类与对象的定义及使用
类下面的属性和方法
属性:事物的特点
方法:行为动作
定义类的语法:
public class Dog{ //定义一个类
//属性
public String name; //名字
public String color; //颜色
//方法
public void show(){
System.out.println("一条名叫"+this.name+"的狗,颜色是"+this.color);
}
}
定义对象关键字new,通过new来定义一个对象从而使用对象。
Dog dog = new Dog();
dog.name = "大黄"; //给name属性赋予内容
dog.color = "棕色"; //给color属性赋予内容
dog.show();
输出结果:一条名叫大黄的狗,颜色是棕色
上面就是一个完整的类与对象的定义和使用
4.对象内存和引用分析
定义一个类不会存储在内存空间里面
栈内存空间:保存对象指向的地址
堆内存空间:用来存储new对象之后的属性。
如图:
如上图,当new了一个对象,就会开辟一个内存空间把地址存储在栈内存,把属性信息存储在堆内存,然后通过地址去调用对象里面的属性,如下图。
如果定义一个对象没有new,也会开辟一个内存空间用来存储地址,不过这个地址存储在栈内存只不过没有指向堆内存。
可以一个定义对象就可以定义两个对象,不过占用的内存空间也是两份
5.引用与垃圾产生分析
在堆内存中没有被栈内存引用的为垃圾内存,会被GC(Garbage Collector垃圾收集器)不定时的回收或释放这些无用空间。
例子:
public class Holle{
public void static main(String[] agse){
Dog doga = new Dog();
doga.name = "大黄";
doga.color = "棕色";
Dog dogb = new Dog();
dogb.name = "大黑";
dogb.color = "黑色";
dogb = bog1;
}
}
当dogb=doga,不会开辟一个内存空间只会去引用doga的堆内存空间,当dogb更改了属性,doga会拿到更改后的属性,因为doga和dogb都是指向同一个堆内存空间。