面向过程:当要实现一个功能的时候,每一个具体的步骤都要亲历亲为
面向对象:实现某一个功能的时候,不需要关心具体步骤,而是找一个有该功能的人来帮助实现
类与对象
类:用来模拟现实的事务,包含属性(是什么),包括行为(能干什么)
对象:一个类的实物,具体的东西
类的定义
直接在类里面写上成员变量(属性)+成员方法(行为)
成员变量同变量的声明
成员方法与以前的方法相比不需要有static关键字
public class student {
//成员变量
//成员方法
}
创建对象及其使用
创建对象的步骤:
1.导包:指出需要使用的类在什么位置 、
语法
import 包名称.类名称
对于和当前类属于同一个包的情况,可以省略导包语句不写
2.创建:格式
类名称 对象名 = new 类名称();
3.使用:
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法(参数)
一个对象的内存图
步骤简述:
1.在方法区创建两个相应的类
2.main函数首先进栈
3.new Phone在堆中给地址,成员方法链接到方法区的成员方法
4.在栈中把上面的地址赋值给对象
5.call方法压栈,完事之后弹出
6.sendMessage方法压栈,之后弹出
两个对象的内存图
这种是new了两遍,在堆中创建了两个地址,分别给栈中的变量
两个引用指向同有个对象的内存图
将以及保存的某个变量的地址值赋值给另一个变量
使用对象类型作为方法的参数
使用对象类型作为方法的返回值
一般在这个方法内部创建一个需要返回的对象,之后进行相应操作后返回对象
这个返回值其实是对象的地址值
成员变量和局部变量的区别
局部变量:在方法的内部,只能方法自己可以使用出了方法就不能使用了,必须手动进行赋值,否则不能使用,位于栈内存,随着方法进栈而诞生
成员变量:在方法的外部(只在class的大括号中),整个类都可以使用,有默认值,位于堆内存随着对象被创建诞生,随着对象被垃圾回收而消失
面向对象三大特征之封装性
private关键字的使用:在某个变量前面加一个private关键字
private关键字的作用:为了解决一些不合理的数据传输
一旦使用了private关键字之后本类可以随便访问,而非本类之外的就不可以直接访问了
间接访问成员变量:
在这个类中定义一对set和get方法,这两个方法用于给被private修饰的成员变量赋值,以及取出相应的成员变量
命名规则:
必须叫getxxx和setxxx
This关键字的使用
当方法的局部变量和方法的成员变量重名的时候,根据就近原则会使用局部变量,如果需要访问本类当中的成员变量,需要使用格式this.成员变量名,通过谁调用的方法谁就是this(当创建一个对象的时候,这个对象.方法进行调用,则这个对象就是this。所以对象。成员变量名称就可以访问到成员变量了)
构造方法
构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象的时候,其实就是在调用构造方法。
格式:
public 类名称(参数类型 参数名称){
方法体
}
注意事项:
1.构造方法的名称不是跟一般方法一样遵循小驼峰,一定要与类名称相同(完全一样,包括大小写)
2.构造方法不要写返回值,连void都不要写
3.构造方法不能有return一个具体的返回值
4.如果没有编写构造方法则默认赠送一个构造方法没有参数什么事情都不能做
5.构造方法是可以进行重载的,也就是写两个构造方法,但是参数传递不一样是可以的
构造方法的使用:
不需要用对象名称.什么东西,直接new之后构造方法就自动执行了
总结:一个类的标准写法
成员变量要用private进行保护,构造方法可以用来传入初始参数,如果需要不传参数的构造方法,要自己设置,要设置get和set方法方法改变与取出成员变量,方法的局部参数与成员变量重名的时候要用this关键字。