面向对象和封装
1、 面向对向的思想
2、类和对象
3、 类的定义
4、对象的创建及其使用
5、使用对象成为方法的参
6、成员变量和局部变量的区别
7、面向对象三大特征之封装性
8、构造方法
9、定义一个标准的类
1、 面向对向的思想
面向过程: 当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。
面向对象: 当需要实现一个功能的时候,不关心具体的步骤,而是找一个具有该功能的人,来帮我做事儿。
特点: 面向对象思想是一种符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。面向对象的语言中,包含了三大基本特征,即封装、继承和多态。
封装概述: 是面向对象三大特征之一(封装,继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的
封装原则 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 成员变量private,提供对应的getXxx()/setXxx()方法
封装好处 通过方法来控制成员变量的操作,提高了代码的安全性 把代码用方法进行封装,提高了代码的复用性
2、类和对象
2.1 什么是类
类是一组相关属性和行为的几何。可以看成是一类事物的模板,使用事物的属性特征和行为特征描述该类事物。
属性: 就是该事物的状态信息
行为: 就是该事物能够做什么
2.2 什么是对象
对象是一类事物的具体表现,对象是类的一个实例,必然具备该类事物的属性和行为。
2.3 类与对象的关系
类是对一类事物的描述,是抽象的
对象是一类事物的实例,是具体的
类是对象的模板,对象是类的实体
3、 类的定义
3.1事物与类的对比
现实世界的一类事物
属性: 事物的状态信息
行为: 事物能够做什么
java中用class描述事物也是如此:
成员变量: 对应事物的属性
成员方法: 对应事物的行为
类定义的格式:
public class Student {
//成员变量
//成员方法
}
代码示例
public class student {
//成员变量
String name;
int age;
//成员方法
public void eat(){
System.out.println("吃饭啦!!");
}
public void sleep() {
System.out.println("睡觉觉!");
}
public void study(){
System.out.println("学习!!");
}
}
注意:
成员变量是直接定义在类当中的,在方法的外边
成员方法不要写static关键字
4、对象的创建及其使用
通常情况下,一个类并不能直接使用,需要根据类创建一个对象,才能使用。
导包:也就是指出需要使用的类,在什么位置
import包名称.类名称;
import cn.itcast.demo01.student;
对于和当前类属于同一个包的情况省略导包语句不写。
创建,格式:
类名称 对象名=new 类名称();
Student stu=new Student();
使用,分为两种情况:
使用成员变量: 对象名.成员变量名
使用成员方法:对象名.成员方法名(参数)
注意: 如果成员变量没有进行赋值,那么将会有一个默认值,规则和数组一样
public class studentnew {
public static void main(String[] args) {
student stu=new student();//与上一段代码的student类一致
System.out.println(stu.name);//null
System.out.println(stu.age);//0
System.out.println("============");
//改变对象当中的成员变量数值内容
//将右侧的字符串,赋值交给stu对象当中的name成员变量
stu.name="小王";
stu.age=21;
System.out.println(stu.name);//小王
System.out.println(stu.age);//21
//使用成员方法
stu.eat();
stu.sleep();
stu.study();
}
}
1.定义的位置不一样
局部变量:在方法的内部
成员变量:在方法的外部,直接写在类中
2.作用范围不一样
局部变量:只有方法当中才可以使用,出了方法就不能再用了
成员变量:整个类全都可以通用
3.默认值不一样
局部变量:没有默认值,如果想要使用,必须手动进行赋值
成员变量:如果没有赋值,会有米认知,规则和数组一样
一个标准的类通常要拥有下面四个组成部分:
- 所有的成员变量都要使用private关键字修饰
- 为每一个成员变量编写一对Getter/Setter方法
- 编写一个全参的构造方法
- 编写一个无参的构造方法