day08 初识面向对象

初识面向对象

1. 整体介绍

1.整个面向对象这一部分的知识点,预计时长一周(5天)

2.我们在面向对象之前学习的内容有以下两个特点

​ 2.1 之前的内容关联性不是特别紧密

​ 2.2 之前的内容语法格式,需要记忆的内容比较多,需要理解的较少

3.面向对象这一部分的内容

​ 3.1 关联性特别紧密 中途一定不能落下内容

​ 3.2 这一部分内容 需要理解的较多 代码也会随之增多

2. 万物皆对象

自然界中的任何事物,都可以理解为一个对象,通过分析其共有的特征和行为,将其描述的完整。

任何事物都可以分为某一类,分类是我们认识世界很自然的过程。

3.特征和属性

一类事物共有的特征,称之为属性。在代码中使用属性描述。

4. 行为和方法

一类事物共有的行为,称之为方法。在代码中使用方法描述。

5.类和对象的关系

类是对象的抽象

对象是类的具体

6.编写类和对象

学生类

学生共有的特征:属性

姓名

年龄

身高

体重

性别

爱好

班级

……

学生共有的行为:方法

学习

吃饭

睡觉

谈恋爱

做运动

……

类的对象的抽象,对象是类的具体

类仅仅是一个模板,对象是真真实实存在的个例/实例

package com.atguigu.test6;

/**
 * 学生类
 * 学生共有的特征:属性
 *      姓名
 *      年龄
 *      身高
 *      体重
 *      性别
 *      爱好
 *      班级
 *      ...
 *
 * 学生共有的行为:方法
 *      学习
 *      吃饭
 *      睡觉
 *      谈恋爱
 *      做运动
 *      ...
 *
 * 类的对象的抽象,对象是类的具体
 * 类仅仅是一个模板,对象是真真实实存在的个例/实例
 * */

public class Student {
    // 属性/成员变量/实例属性/实例变量
    String name;
    int age;
    double height;
    double weight;
    char sex;
    String hobby;
    String gradeName;

    // 成员方法/实例方法/普通方法/非静态方法
    public void study(){
        System.out.println("学生学习");
    }

    public void eat(){
        System.out.println("学生吃饭");
    }

    public void sleep(){
        System.out.println("学生睡觉");
    }

    public void love(){
        System.out.println("学生谈恋爱");
    }

    public void sport(){
        System.out.println("学生做运动");
    }

    public static void main(String[] args) {
        // 1.创建对象 语法格式:类名 对象名 = new 类名();
        Student stu1 = new Student();

        // 2.通过对象访问属性 给属性赋具体的值 语法格式:对象名.属性名 = 值;
        stu1.name = "张三";
        stu1.age = 20;
        stu1.sex = '男';
        stu1.height = 175;
        stu1.weight = 70;
        stu1.gradeName = "三年二班";
        stu1.hobby = "尬舞";

        System.out.println(stu1.name);
        System.out.println(stu1.age);
        System.out.println(stu1.gradeName);
        System.out.println(stu1.height);
        System.out.println(stu1.weight);
        System.out.println(stu1.hobby);
        System.out.println(stu1.sex);

        // 3.通过对象访问方法 语法格式:对象名.方法名();
        stu1.study();
        stu1.eat();
        stu1.sleep();
        stu1.sport();
        stu1.love();

        System.out.println("------------------------");

        Student stu2 = new Student();

        stu2.name = "李四";
        stu2.age = 22;
        stu2.sex = '男';
        stu2.height = 177;
        stu2.weight = 80;
        stu2.gradeName = "三年二班";
        stu2.hobby = "口技";

        System.out.println(stu2.name);
        System.out.println(stu2.age);
        System.out.println(stu2.gradeName);
        System.out.println(stu2.height);
        System.out.println(stu2.weight);
        System.out.println(stu2.hobby);
        System.out.println(stu2.sex);

        stu2.study();
        stu2.eat();
        stu2.sleep();
        stu2.sport();
        stu2.love();
    }
}

7.成员变量和局部变量区别

成员变量和局部变量

局部变量实例变量
存储位置基本数据存在栈中,引用数据类型,名字在栈,值在堆实例变量全部存在堆中
生命周期随着方法的入栈而生效,随着方法的出栈而死亡随着对象的创建而生效,随着对象被垃圾回收而死亡

对象存储的位置和实例变量

package com.atguigu.test7;
/**
 * 成员变量/属性/字段/实例变量
 *
 * 定义位置:直接书写在类中
 * 作用范围:整个类中都可以访问
 * 能否重名:可以与局部变量重名,局部变量优先使用(就近原则)
 * 默认值:有默认值 默认值与数组相同
 * */
public class Student {
    String name;
    int age;
    double height;
    char sex;
    boolean isAdult;  // 是否成年

    public void study(){

//        String name = "hello";  // name重名的话,会优先使用局部变量 hello
        System.out.println(name + "学生在学习");
    }

    public void eat(){
        System.out.println(name + "学生吃饭");
    }

    public void sleep(){
        System.out.println(name + "学生睡觉");
    }

    public void printInfo(){
        System.out.println("我的名字是:" + name);
        System.out.println("我的年龄是:" + age);
        System.out.println("我的身高是:" + height);
        System.out.println("我的性别是:" + sex);
        System.out.println("是否成年:" + isAdult);
    }

    public static void main(String[] args){
        Student stu1 = new Student();
        stu1.name = "张三";
        stu1.age = 20;
        stu1.height = 177;
        stu1.sex = '男';

        stu1.study();

        Student stu2 = new Student();
        stu2.name = "赵四";
        stu2.study();

        System.out.println("-----------------------------");
        stu2.printInfo();

        System.out.println("-----------------------------");
        Student stu3 = new Student();
        stu3.printInfo();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值