面向对象和面向过程对比
面向过程编程:是一种以过程为中心的编程思想,实现功能的每一步都是
自己实现
的。
面向对象编程: 是一种以对象为中心的编程思想,通过
指挥对象实现
具体功能
对象:指客观存在的具体事务。
类和对象
类是对象的描述,
对象是类的实体
类
类:类是对现实生活中一类具有共同属性和行为的事物的抽象
类是对事物,也是对对象的一种描述,可以将类理解为一张设计图,根据设计图,可以创建出具体存在的事物。
类的组成
属性 该事物的各种特征
行为 该事物存在的功能(能够做的事情)
类的定义
类的组成:属性和行为
属性:在代码中通过成员变量来体现(类中方法外的变量 )
行为:在代码中通过成员方法来体现(和前面的方法相比去掉static关键字即可)
定义步骤:
定义类:
public class 类名{
//成员变量
变量1的数据类型 变量1;
变量2的数据类型 变量2;
//成员方法
方法1;
方法2;
}
实例:
package itheima.com;
import java.sql.SQLOutput;
public class Student {
// 属性 :姓名,年龄
// 成员变量:跟之前定义的变量格式一样,只不过位置发生了改变,类中方法外
String name;
int age ;
//行为:学习
//成员方法:跟之前定义方法格式一样,指不过去掉了static关键字
public void study(){
System.out.println("学习");
}
}
对象
对象 :能够看得到的真实存在的实体。
创建对象
格式:类名 对象名 = new 类名();
范例:Student s = new Student();
使用对象
-
使用成员变量
格式:对象名 变量名
范例:s.name -
使用成员方法
格式: 对象名.方法名();
范例:s.study();
实例:
package itheima.com;
public class TestStudent {
public static void main(String[] args) {
Student stu =new Student();
System.out.println(stu.name);//不赋值为null
System.out.println(stu.age);//不赋值为 0
stu.name = "zhengjingshuo";
stu.age = 22;
System.out.println(stu.name);
System.out.println(stu.age);
stu.study();
// itheima.com.Student@1b6d3586
// 全类名(包名+类名)
System.out.println(stu);
}
}
打印结果:
实例: 手机类的测试和使用
需求:定义一个手机类,再定义一个手机测试类,在手机测试类中完成成员变量和成员方法的使用
创建类
package com.itheima.test;
public class Phone {
//品牌、价格
String brand;
int price;
//打电话,发短信
public void call(String name){
System.out.println("给"+name+"打电话");
}
public void send()
{
System.out.println("群发短信");
}
}
创建和使用对象
package com.itheima.test;
public class TestPhone {
public static void main(String[] args) {
//1.创建对象
Phone pho = new Phone();
//2.给成员变量赋值
pho.brand="华为";
pho.price=2399;
//3.打印赋值后的成员变量
System.out.println(pho.brand);
System.out.println(pho.price);
//4.调用成员方法
pho.call("zhengjingshuo");
pho.send();
}
}
成员变量和局部变量的区别
成员变量:类中方法外的变量
局部变量:方法中的变量
区别 | 成员变量 | 局部变量 |
---|---|---|
内存中的位置不同 | 堆内存 | 栈内存 |
类中的位置不同 | 类中方法外 | 方法内或者方法声明上(形参) |
生命周期不同 | 随着对象的存在而存在,随着对象的消失而消失 | 随着方法的调用而存在,随着方法调用完毕而消失 |
初始化值不同 | 有默认的初始化值 | 没有默认的初始化值,必须先定义,赋值,才能使用 |