面向对象概念
面向过程;是一种变成思想,指的是我们做任何事,都要亲历亲为
面向对象;和面向过程不同的是, 我们做任何事,从执行者变成指挥者,会让很多复杂的问题简单化
面向对象的三大特征;
封装;把相关的数据封装成一个"类"组件
继承;是子类自动分享父亲属性和方法,是类的一种关系
多态: 增强软件的灵活性和重用性
类
1java中最基本单位就是类,相当于类型;
2类是一类事物中抽取共同属性和功能形成的
3可以理解成模板或者设计图纸.
类在现实中并不存在,他只是对象的数据类型
对象
1对象的属性用来描述对象的基本特征
2对象的功能用来描述可以完成的操作
3对象的标识指每个对象在内存中都有一个唯一的地址值用于与其他对象做区分
类和对象的关系
1先创建类,在通过类创建出对象
2我们可以通过一个类创建出多个对象
3类是抽象的,类是具体的
类的使用
我们要把汽车抽象成类
汽车的价格,颜色,坐几个人这些都是汽车的属性
而开车,停车都是汽车的功能
如用 new关键字来定义对象
对象在内存中的存储
java把内存分为5大区域 ,目前只需要关注栈和堆
1.一般来讲局部变量在存在栈中,方法执行结束就会被释放
2对象(new’ 出来的东西)存在堆中,在对象不再被使用时,内存才会被释放
3每个堆内存的元素都有地址值
4对象中的属性都是成员变量(相当于上例汽车中的颜色,座位等),他们是有默认值的
TIPS: 栈与队列指的是一种数据的结构。
栈:先进后出(FILO – First In Last Out)
队列:先进先出(FIFO – First In First Out)
对象的创建过程分析
Car c = new Car
1在栈内存中开发出一块内存用于存放引用类型Car 的变量c
2在堆内存中开发出一块用于存放Car类型的对象
3对象会被初始化 如String color =null;
4对象会生成一个唯一的地址值,然后将这个地址值交给 类型Car的变量c来保存
5想要操作Car对象的各种资源,可以通过变量c的地址值来找到该对象 比如 c.start();
car 可以生成对多个对象!!!
封装
封装是隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式,比如类和方法
1提高安全性
2提高重要性
private 关键字
是一个权限修饰符,可以用来修饰成员变量和成员方法.被私有化的成员只能在本类中访问
new School 不一样 因为每次new 定义都会在堆中形成新的地址值
new School
School s=new School();
new School();
匿名对象