Java复习笔记-08

面向对象

1 概述

要完成一个需求时,每一个具体的步骤我们都是参与者,并且我们要面对的是每一个步骤和过程,这种思想称之为面向过程思想。

面向过程开发其实就是面向着具体的每一个步骤和过程,然后把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。

面向过程思想的代表语言是C语言。

面向对象思想:

  • 面向对象思想是基于面向过程的
  • 面向过程强调的是每一个功能的步骤
  • 面向对象强调的是对象,由对象去调用对应的功能
  • 面向过程中我们的角色是执行者,面向对象中我们的角色是一个指挥者

特点:

  • 是一种更符合我们思考习惯的思想
  • 可以将复杂的事情简单化
  • 我们从执行者变成了指挥者

2 类与对象及其使用

  • 类与对象的关系
    • 我们学习编程语言,就是为了模拟现实世界的事物。比如网上购物,超市的计费系统。
    • 如何表示一个现实世界的事物呢?
      • 属性 就是该事物的描述信息
      • 行为 就是该事物能够干什么
    • java语言中最基本的单位是,所有的事物我们都通过类来体现。
    • 类:是一组相关的属性行为的集合。
    • 对象:就是该类事物的一个具体的体现。

3 类的定义

  • java中用class描述事物
    • 成员变量 就是事物的属性
    • 成员方法 就是事物的行为
  • 定义类其实就是定义类中的成员(成员变量和成员方法)
    • 成员变量:和定义局部变量是一样的,只不过位置发生了改变。位置在类中,方法外
    • 成员方法:和以前定义方法一样,只是把前面的static去掉。
public class Student {
    
    // 属性  成员变量
    // 年龄
    int age;
    // 姓名
    String name;
    // 学号
    int id;
    
    // 行为  成员方法
    public void study(){
        System.out.println("好好学习,天天向上");
    }
    
    public void eat(){
        System.out.println("学习饿了就吃饭");
    }
    
}

4 对象的创建和使用

  • 创建对象
    • 格式: 类名 对象名 = new 类名();
  • 使用对象访问类中的成员
    • 对象名.成员变量
    • 对象名.成员方法()
    public static void main(String[] args) {

        // 创建对象  类名 对象名 = new 类名();
        Student student = new Student();
        // 打印的结果就是内存地址
        System.out.println(student);
        // 给成员变量赋值
        student.id = 100;
        student.age = 18;
        student.name = "张君宝";

        System.out.println(student.name);

        // 使用成员方法
        student.eat();
        student.study();

    }

5 对象的内存图

  • 创建一个对象的内存图
public class Phone {
    // 成员变量
    // 品牌
    String brand;
    // 价格
    int price;
    // 颜色
    String color;


    // 成员方法
    public void call(String name){
        System.out.println("给" + name + "打电话");
    }

    public void sendWeChatMsg(){
        System.out.println("大哥大嫂过年好~");
    }
}



public class TestDemo1 {
    public static void main(String[] args) {
        // 创建对象
        Phone phone = new Phone();
        System.out.println(phone);
        // 给成员变量赋值
        phone.brand = "小米";
        phone.price = 1999;
        phone.color = "白色";
        System.out.println("品牌是:" + phone.brand +"价格:"+ phone.price +"颜色:"+ phone.color);

        phone.call("张三");
        phone.sendWeChatMsg();
    }
}

6 对象地址的进制

十进制: 0 - 9 满十进一

二进制: 0 - 1 满二进一 用0b开头 0b000111 0b11100

八进制: 0 - 7 满八进一 用0开头

十六进制(HEX): 0-9 a-f 满十六进一 用0x开头

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

  • 在类中的位置不同
    • 成员变量:在类中,方法外
    • 局部变量:方法中或者方法的声明上(形参)
  • 作用域不同
    • 成员变量:在这个类中都能调用
    • 局部变量:在定义的括号中能调用,除了括号就不行
  • 在内存中的位置不同
    • 成员变量:堆内存
    • 局部变量: 栈内存
  • 初始化值不同
    • 成员变量:有默认值
    • 局部变量:没有默认值。必须先定义并且赋值后才可以使用
  • 生命周期不同
    • 成员变量:随着对象的创建而存在,随着对象的消失而消失
    • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

8 构造方法

  • 作用

    • 给对象的数据进行初始化
  • 格式:

    • 方法名和类名相同
    • 没有返回值类型,连void都没有
    • 没有具体的返回值
    修饰符 构造方法名(参数列表){
    
    }
    

注意点:一个类中,如果没有提供任何构造方法,系统会自动给一个默认的没有参数的构造方法

如果一个类中提供了构造方法,系统将不再提供默认的没有参数的构造方法

构造方法可以重载

9 封装

封装是面向对象的三大特性之一。

面向对象三大特性:封装、继承、多态

  • private关键字
    • 是一个权限修饰符
    • 可以修饰成员变量和成员方法和构造方法
    • 被private修饰的成员只能在本类中使用,外部无法访问
  • private最常见的应用
    • 把成员变量用private修饰
    • 提供对应的setXxx()/getXxx()方法
class Person{
    // 姓名
    private String name;
    // 年龄
    // private修饰的内容只能在本类中使用
    private int age;

    // 给姓名赋值
    public void setName(String n){
        name = n;
    }

    // 获取姓名
    public String getName(){
        return name;
    }



    // 成员方法 set方法
    // 设置年龄值
    public void setAge(int a){
        if (a <0 || a > 120){
            age = 18;
            return;
        }
        age = a;
    }

    // 获取年龄的方法
    public int getAge(){
        return age;
    }

    public Person(){}


    public Person(String n){
        name = n;
    }

    public Person(String n,int a){
        name = n;
        age = a;
    }




    public void work(){
        System.out.println("人要工作");
    }
}
  • 封装的概述
    • 是面向对象的三大特征之一
    • 现实客观世界中成员变量都是隐藏在对象内部的,外部是无法直接操作和修改的。
  • 封装的原则
    • 将不需要对外提供的内容都隐藏起来
    • 把成员变量隐藏,提供公共方法让其他类访问
  • 封装的好处
    • 通过方法来控制成员变量的操作,提高了代码的安全性
    • 把代码用方法进行封装,提高代码的复用性

10 this关键字

  • this关键字概述

    • this:代表所在类的对象的引用
    • 方法被哪个对象调用,this就是代表哪个对象
  • this关键字的使用

    • 解决局部变量和成员变量重名的问题
    • this.age 是调用本对象中的成员变量
    public void setAge(int age){
            this.age = age;
        }
    
    • this.成员方法名()
    • 在本类中调用成员方法,一般这里的this.可以省略
    public void teach(){
            System.out.println("小小教书匠");
            this.work();
        }
    
        public void work(){
            System.out.println("老师要工作");
        }
    
    • this(参数);
    • 这种用法是调用本类中的构造方法
    public Teacher(String teacherName){
            this.teacherName = teacherName;
        }
    
        public Teacher(String teacherName,int age){
            this(teacherName);// this.teacherName = teacherName;
            this.age = age;
        }
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值