面向对象(oop)基础篇
面向对象基础
1. 面向对象基础概念
面向过程
是一种看待问题、解决问题的思维方式。着眼点在于问题是如何一步步的解决的,然后亲力亲为的去解决这个问题
面向对象
是一种看待问题、解决问题的思维方式。着眼点在于找到一个能够帮助解决问题的实体,然后委托这个实体去解决问题
把大象装冰箱:
面向过程:
1、打开冰箱门 --> 我
2、把大象装进去 --> 我
3、关上冰箱门 --> 我
面向对象:
1、打开冰箱门 --> 冰箱
2、把大象装进去 --> 大象
3、关上冰箱门 --> 冰箱
小明要组装一台电脑:
面向过程:
1、小明走到电脑城 --> 小明
2、购买各种零配件 --> 小明
3、将买到的零配件带回家 --> 小明
4、组装起来,开机 --> 小明
面向对象:
1、委托一个朋友去电脑城买电脑
2、委托一个快递把电脑送回来
3、委托朋友组装起来
Java是一种面向对象的编程语言:
使用Java可以更加容易的写出来具有面向对象编程思想的代码。
使用面向对象编程语言写出的代码一定是面向对象的代码吗?
不一定!
对象
一个具有特殊的行为(功能),可以帮助解决问题的实体。
类
是若干个具有相同的特征和行为的对象的集合。
类和对象的关系
类是若干个对象的集合,对象是类中的个体。
2. 类的设计和对象的实例化
在程序设计中,一定是先有的类,再有的对象。
1、类的设计
[访问权限修饰符] [其他的修饰符] class 类名 {
// 类体
// 1. 这个类所有的对象共有的特征
// 在程序中的体现,就是一个全局变量,这个全局变量称为 -- 属性
// 2. 这个类所有的对象共有的行为
// 在程序中的体现,就是一个方法
}
2、对象的实例化
找出一个类中的实体。
Person xiaoming = new Person();
3. 类中的成员访问
类成员:组成一个类的属性、方法...
点语法:点可以理解为 "的"
static: 可以用来修饰属性、方法。被static修饰的成员叫做静态成员。
被static修饰的属性 --> 静态属性
被static修饰的方法 --> 静态方法
没有被static修饰的属性 --> 非静态属性、实例属性
没有被static修饰的方法 --> 非静态方法、实例方法
静态的成员是属于类的。
静态的属性,没有在堆上开辟空间。在方法区中开辟空间。静态的属性空间的开辟是发生在类第一次被加载到内存中的时候。是属于类的,是需要用类来访问的。
结论
1、静态成员用类访问、非静态成员用对象访问
2、非静态的方法中,可以直接访问当前类中的静态和非静态的成员
3、静态方法中,只能访问静态的成员,不能访问非静态的成员
NullPointerException
在成员访问的时候,非常容易遇到的一个异常。空指针异常。
出现的原因:
引用数据类型的默认值是null,而如果使用一个null去执行任何的引用操作,都会触发NullPointerException