JavaSE基础Day06

JavaSE基础Day06

课程纲要

1. 类的定义和类的使用 ---> 上午核心案例: 学会基础格式(定义格式和使用格式)
2. 类的封装性 ---> 今日重点案例: 定义一个标准类

第一章 类的定义和类的使用

1、面向对象和面向过程

1. 两者的区别:
	A. 面向过程: 强调的是步骤,所有的事情都是自己去做
	B. 面向对象: 强调的是对象,找人帮助你做事情(备注:对象具备有做事情的功能)
	
2. 例如:
	打游戏上王者的操作。
	面向过程: 自己辛辛苦苦打游戏,从黑铁到青铜到白银到黄金到白金到钻石到大师最后上王者,很辛苦
	面向对象: 找个代练帮你上王者,前提是需要支付一定的酬劳
	对象: 代练,他具备有 上王者的功能

2、类和对象的关系

现实世界                  Java世界
========================================
手机设计图纸  ---------->class Phone
具体华为P30手机 --------> 对象  Phone p = new Phone();
特征: 品牌,价格 --------> 成员变量  String pinpai; int jiage;
功能: 打电话,发信息 ----> 成员方法  public void call(){ .... }    public void send(){ .... }

3、类定义和类使用【重点】

1. 类的定义(类里面有什么)
	A. 成员变量: 写在类中,方法外的变量
	B. 成员方法: 以前的方法,去掉了 static 关键字
	
2. 类的使用(8个字"创建对象,调用成员")
	A. 创建对象
		a.格式:	
			类名称 对象名称 = new 类名称();
		b.例如:
			Student stu = new Student(); //Student是类名称,stu是对象名称
	B. 调用成员
		a. 调用成员变量: 对象名称.成员变量名称  	//例如: stu.name  stu.age
		b. 调用成员方法: 对象名称.方法名称(参数); 	//例如: stu.eat();   stu.sleep();

4、局部变量和成员变量

1. 代码位置不同
	A. 局部变量: 写在方法中 或者 方法的小括号当中
	B. 成员变量: 写在类中 方法外
	
2. 内存位置不同
	A. 局部变量: 存在于栈内存,跟着方法走。方法在,局部在;方法亡,局部亡。(栈当中没有 默认值)
	B. 成员变量: 存在于堆内存,跟着对象走。对象在,成员在;对象亡,成员亡。(堆当中存在 默认值)

第二章 封装性

1、封装性的含义

1. 面向对象的三大特征:
	A. 封装性 (今天课程学习)
	B. 继承性 (Day09课程学习)
	C. 多态性 (Day10课程学习)
	
2. 封装的含义:
	将一些细节的部分,隐藏起来,外界不可见。你只需调用即可,不要去操心具体的细节。

2、private 关键字的由来

1. 为什么需要使用 private 关键字?
    如果不采用 private 关键字,会导致'数据安全问题' 给年龄赋值的时候,可以赋值为负数。例如: stu.age = -28;
	不符合现实逻辑的情况,就是'数据安全问题' 解决方案就是采用 private 关键字,给年龄加上 private int age;
	这样写完之后,会存在问题: 正常的年龄也不能赋值成功。怎么解决?提供一组 getter 和 setter 方法,能够存取值
	getter 方法用于取值'取钱',setter方法用于存值'存钱'2. 生活实例:
	我们现在在外面,都要租房子,租房子要找小区的房子,为啥?因为有门禁更安全。
	所有的人都不能直接进出,需要找物业帮你办理进出的门禁卡,例如: 刷脸。

3、this 关键字的使用

1. 含义(了解即可)
	通过谁调用的方法,谁就是 this. //具体的含义在 Day09 当中讲解。
	
2. 作用:
	区分成员变量和局部变量重名的问题。
	如果是 this.变量名称 表示的是 成员变量
	如果是 变量名称 表示的是 局部变量
	
3. 今天课程的使用场景
	A. 在 setter 方法当中会使用 this
	B. 在构造方法当中会使用 this

4、构造方法

1. 构造方法的格式:
	A. 格式:
		修饰符  类名称(参数列表){
            
        }
	B.例如: //学生类 class Student 的构造方法
		public Student(){
            
        }

2. 构造方法调用的时机:(什么时候会调用到构造方法)
	在创建对象的时候,就是调用构造方法的时候。 //问题: 成员方法和构造方法,谁先调用? 构造方法先调用
        
3. 构造方法有什么作用,为什么要使用构造方法?
     A. 创建对象(无参构造和全参构造都可以创建对象)
     B. 给成员变量赋值(主要是全参构造帮你去赋值)
     
4. 构造方法的注意事项
	A. 格式的注意: 构造方法没有返回值类型,不要写 void , 方法名称和类名称必须完全相同。
	B. 系统默认赠送无参构造,作用给你创建对象使用。如果你写出了构造方法,系统不再赠送构造方法。

5、标准类定义和使用【重点】

标准类的定义

//英雄类(标准类的定义 JavaBean)
//[1]成员变量 private 修饰
//[2]成员方法 getter 和 setter
//[3]构造方法 无参构造 和 全参构造
public class Hero {

    //成员变量,private 修饰
    private String name;
    private int age;

    //构造方法: 无参构造
    public Hero() {
    }

    //构造方法: 全参构造
    public Hero(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //成员方法 getter 对于Name进行取值操作
    public String getName() {
        return name;
    }

    //成员方法 setter 对于Name进行存值操作
    public void setName(String name) {
        this.name = name;
    }

    //成员方法 getter 对于Age进行取值操作
    public int getAge() {
        return age;
    }

    //成员方法 setter 对于Age进行存值操作
    public void setAge(int age) {
        this.age = age;
    }
}

标准类的使用

//测试类(类的使用: 创建对象,调用方法)
public class Test {

    public static void main(String[] args) {
        //【1】无参构造+ setXxx()方法的使用
        //---------------
        //创建对象
        Hero one = new Hero();
        //调用方法,调用 setXxx 方法,进行存值操作
        one.setName("盖伦");
        one.setAge(20);
        //调用方法,调用 getXxx 方法,进行取值操作
        String name1 = one.getName();
        int age1 = one.getAge();
        //打印输出结果
        System.out.println("name1 = " + name1); //name1 = 盖伦
        System.out.println("age1 = " + age1); //age1 = 20
        System.out.println("===========================");
        //【2】全参构造 的使用
        //---------------
        //创建对象
        Hero two = new Hero("赵信",22);
        //调用方法,调用getXxx 方法,进行取值的操作
        String name2 = two.getName();
        int age2 = two.getAge();
        //打印输出结果
        System.out.println("name2 = " + name2); //name2 = 赵信
        System.out.println("age2 = " + age2); //age2 = 22
    }
}

你可能感兴趣的:(JavaSE基础Day06)