学习目标
- 能够理解面向对象思维
- 面向对象和面向过程的区别
- 类的定义格式
- 对象的定义和使用
- 成员变量和局部变量的区别
- private的含义
- this关键字的概念和使用
- 构造方法的含义
- JavaBean标准类定义
面向对象思想
- 面向对象概念
这里的对象泛指一切事物,在java中一切皆对象,每种事物都具备自己的属性和行为,属性一般指的是事物的状态比如颜色 尺寸,行为一般指事物能够做什么比如跑.强调的是通过对象的行为去实现功能,它区别于面向过程思想,面向过程强调的是一步一步的自己去实现. - 面向对象和面向过程的区别
举例(洗衣服):
面向过程: 把衣服脱下来–>找一个盆–>放点洗衣粉–>加点水–>浸泡10分钟–>揉一揉–>清洗衣服–>拧干–>晾 起来
面向对象: 把衣服脱下来–>打开全自动洗衣机–>扔衣服–>按钮–>晾起来
总结:
面向过程:强调的是实现洗衣服行为的过程
面向对象:强调的是洗衣机这个对象,至于洗衣机怎么洗的衣服咱们不管. - 面向对象的三大特征**
封装 继承 多态
类和对象
- 什么是类
是一系列属性和行为的组合,通过这些属性和行为来描述一类事物
举例:比如人是一个类
属性:姓名 身高 肤色 体重
行为:跑 说话等 - 什么是对象
是一类事物的具体体现.
举例:比如叫小明的这个人
属性:姓名 身高 178cm 肤色 黄色 体重 60kg
行为:跑 非常快 说话:汉语 - 什么是属性和行为
属性:事物的状态信息
行为:这个事物能做什么
JAVA中类的定义及使用
- 类的定义格式
public class 类名{
定义类的属性,java中叫成员变量
定义类的行为,java中叫成员方法
}
- 类定义格式的举例
public class Person{
String name;
Integer heigth;//成员变量
String skinColor;
Integer weight;
//成员方法
public void personRun(){
System.out.println("跑的行为");
}
public void personTalk(){
System.out.println("说话的行为");
}
}
对象的创建和使用
- 对象的创建格式
类名 变量名 = new 类名();
- 使用对象中的成员
对象名.成员变量
对象名.成员方法
- 举例
public static void main(String[] args) {
Person person = new Person();
//成员变量赋值
person.name = "小明";
person.heigth = 170;
person.skinColor = "黄色";
person.weight = 60;
System.out.println("此人的姓名:"+ person.name);
System.out.println("小明的身高:"+ person.heigth +"cm" + "体重:"+person.heigth);
//成员方法调用
person.personRun();
person.personTalk();
}
成员变量和局部变量
例子
public class car {
//成员变量
String color;
public void drive(){
//局部变量,在方法或者参数中,作用域在此方法中,并且必须有初始值
int speed;
System.out.println("速度:"+ speed);
}
}
- 在类中的位置不同
成员变量:类中,方法外
局部变量:方法中或者方法声明上(形式参数) - 作用范围不一样
成员变量:类中
局部变量:方法中 - 初始化值的不同
成员变量:有默认值
局部变量:没有默认值。必须先定义,赋值,最后使用
面向对象-封装
- 概述
面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。 封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的 方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。 - 原则
将属性隐藏起来,如果访问和修改某个属性,需要调用公共的方法. - 步骤
1-用private 修饰成员变量
2-用get和set方法访问和修改成员变量 - 封装的操作
public class Student {
//private 修饰成员变量
private String name;
private int age;
//公用方法访问和修改成员变量
public String getName() {
return name;
}
public void setName(String name) {
name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
age = age;
}
}
- 封装的优化1 - this
- this的含义
方法被哪个对象调用,方法中的this就代表那个对象。即谁在调用,this就代表谁 - this的格式
this.成员变量
public class Student {
//private 修饰成员变量
private String name;
private int age;
//公用方法访问和修改成员变量
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- 封装的优化2 - 构造方法
- 构造的含义:当一个对象被创建时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。
- 构造的格式
修饰符 构造方法名(参数列表){ // 方法体 }
public class Student {
private String name;
private int age;
Student(String name, int age){
this.name = name;
this.age = age;
}
Student(){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- 通过对象调用
public static void main(String[] args) {
Student student = new Student();
student.setAge(20);
student.setName("小明");
System.out.println("姓名:" + student.getName() + "年龄:" + student.getAge());
Student student2 = new Student("小张", 22);
System.out.println("姓名:" + student2.getName() + "年龄:" + student2.getAge());
}
注意事项
- 如果你不提供构造方法,系统会给出无参数构造方法。
- 如果你提供了构造方法,系统将不再提供无参数构造方法。
- 构造方法是可以重载的,既可以定义参数,也可以不定义参数。
JavaBean
JavaBean 是 Java语言编写类的一种标准规范。符合 JavaBean 的类,要求类必须是具体的和公共的,并且具有无 参数的构造方法,提供用来操作成员变量的 set 和 get 方法。
格式
public class ClassName{
//成员变量
//构造方法
//无参构造方法【必须】
//有参构造方法【建议】
//成员方法
//getXxx()
//setXxx()
}