OOP为面向对象编程的英文缩写
oop是一种思想,这种思想指导我们如何写java代码。
面向对象和面向过程的区别:
面向过程:强调的是解决问题的步骤(如C语言),直接写函数即可,直接调用函数:函数名(..)。
面向对象:强调使用对象解决问题,对象是属性和方法的综合体,使用对象名.属性名和对象名.方法名(..)。
理解:
类是对象的模板。在方法区中存储。
对象中包括属性和方法,对象和数组都是在栈内存中开辟空间,储存首地址,在堆内存中开辟空间储存相应的数据,二者的区别在于结构不同,对象在堆内存中的存储的是其中的方法和属性而数组储存的是元素。
面向对象编程可理解为:
根据问题,进行分析。
通过分析,定义模板(把问题抽象成类)。
根据模板(类),创建对象。
通过对象,解决问题。
实例:
问题:
老于是一个胖子,体重200公斤。为了女朋友决定减肥,通过不懈的努力,体重将为100公斤。
分析,抽象成类:
人类{
属性:姓名,体重
方法:减肥(体重由200变成100)
}
通过类,创建对象:
类名 对象名=new 类名();
通过对象,解决问题:
对象名.属性名 保存数据
对象名.方法名(..) 解决问题的过程
代码:
首先把问题抽象成类:
public class person {
public String name;
public double weight;
public void loseWeight() {
System.out.println(name+"初始体重" + weight);
System.out.println(name+"为了女朋友,开始减肥。。。。。");
weight = 100;
System.out.println(name+"现在的体重" + weight);
}
}
以类为模板创建对象并给对象属性赋值,解决问题:
public class text {
public static void main(String[] args) {
//创建对象
person p1 = new person();
person p2 = new person();
//给对象属性赋值
p1.name = "老一";
p1.weight = 160;
p2.name = "老二";
p2.weight = 200;
//调用对象方法
p1.loseWeight();
p2.loseWeight();
}
}
变量:
在java中变量分为局部变量和成员变量;
局部变量和成员变量的区别:
①声明位置:
局部变量:声明在方法体内;
成员变量:声明在类中,方法体外;
②作用域:
局部变量:只能作用于声明它的方法体内,其他地方无法访问;
成员变量:可以作用于当前类型的所有方法体内。
③缺省值:
局部变量:没有缺省值;
成员变量:有缺省值。
byte、short、int、long类型为0,float、double类型为0.0,char类型为空白字符,boolean类型为false,引用类型为null。
null的含义:null是一种引用类型的数据,表示没有对象的地址!
④修饰符:
局部变量:只能用final修饰。(final能将变量变为常量)
成员变量:可以用任何修饰符修饰(public protected private static final 等等)
⑤重名问题:
局部变量(或参数)之间如果作用域有交集,不能重名;
成员变量之间如果作用域有交集,不能重名;
成员变量和局部变量(或参数)可以重名,局部变量的值会覆盖成员变量的值,想在重名的情况下又要用成员变量给的值,那就要在变量名前加"this."。
方法的参数:
作用:
可以根据用户的需要,在每次调用方法时,都可以向方法体内传入变化的数据。
参数定义:
一个方法可以定义0到多个参数。多个参数用逗号分隔。
传参:
方法调用时,在小括号中给对应的参数赋值,不能使用符号。
调用方法时,方法有几个参数就必须传几个参数,且类型和顺序必须一致。
实参:传入的数据。
形参:定义的参数。
属性和参数的区别:
参数:方法体内的数据,方法调用时存在,执行完毕销毁。是临时的局部变量。