javaSE-(面向对象)

面向对象概述

面向对象思想

面向过程思想与面向对象思想:

  • 面向过程: 面向过程,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。
  • 面向对象: 面向对象思想就是不断的创建对象,使用对象,指挥对象做事情。

特点:

  • 面向过程: 强调的是过程,所有事情都需要自己完成
  • 面向对象:
  • 是一种更符合我们思想习惯的思想(懒人思想,我把事情自己不做,交给别人去做)
  • 可以将复杂的事情简单化(对使用者来说简单了,对象里面还是很复杂的)
  • 将我们从执行者变成了指挥者角色发生了转换

类与对象及其使用

成员变量:

  • 就是事物的属性,处于类中,方法外。

成员方法:

  • 就是事物的行为,不能用static修饰。

类和对象的概念

  • 类: 一组相关属性和行为的集合。
  • 对象: 该类事物的具体体现。

对象的内存图: 对象的内存图

方法公用内存图:方法公用内存图

两个引用指向同一个对象内存图:内存图

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

  • A:在类中的位置不同:
  • 成员变量:类中,方法外
  • 局部变量:方法中或者方法声明上(形式参数)
  • B:在内存中的位置不同:
  • 成员变量:堆内存
  • 局部变量:栈内存
  • C:生命周期不同:
  • 成员变量:随着对象的创建而存在,随着对象的消失而消失。
  • 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。
  • D:初始化值的问题:
  • 成员变量:有默认值。
  • 局部变量:没有默认值。必须先定义,赋值,最后使用.

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

面向对象特性之封装

封装与私有关键字

private关键字:

  • a:是一个权限修饰符。
  • b:可以修饰成员(成员变量和成员方法)
  • c:被private修饰的成员只在本类中才能访问
  • 针对private修饰的成员变量,我们会相应的提供getXxx()和setXxx()用于获取和设置成员变量的值,方法用public修饰

封装的概述和好处:

  • A:封装概述:
  • 是面向对象三大特征之一
  • 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。就像刚才说的年龄。
  • B:封装原则:
  • 将不需要对外提供的内容都隐藏起来。
  • 把属性隐藏,提供公共方法对其访问。
  • 成员变量private,提供对应的getXxx()/setXxx()方法
  • C:好处:
  • 通过方法来控制成员变量的操作,提高了代码的 安全性
  • 把代码用方法进行封装,提高了代码的 复用性

this关键字:

  • A:this:代表本类对象的引用
  • B:局部变量和成员变量重名的时候使用

代码案例:

package com.itheima_07;
/*
 * 学生类
 *
 * 起名字我们要求做到见名知意。
 * 而我们现在的代码中的n和a就没有做到见名知意,所以我要改进。
 *
 * 如果有局部变量名和成员变量名相同,在局部使用的时候,采用的是就近的原则。
 *
 * 我们有没有办法把局部变量的name赋值给成员变量的name呢?
 * 有。
 *
 * 什么办法呢?
 *      用this关键字就可以解决这个问题
 *
 * this:代表所在类的对象引用
 *      方法被哪个对象调用,this就代表那个对象
 *
 * 使用场景:
 *      局部变量隐藏成员变量
 */
public class Student {
    private String name;
    private int age;

    public void setName(String name) { //"林青霞"
        //name = name;
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        //age = age;
        this.age = age;
    }

    public int getAge() {
        return age;
    }
}


package com.itheima_07;
/*
 * 学生类的测试类
 */
public class StudentDemo {
    public static void main(String[] args) {
        //创建对象
        Student s = new Student();
        System.out.println(s.getName()+"---"+s.getAge());

        s.setName("林青霞");
        s.setAge(28);
        System.out.println(s.getName()+"---"+s.getAge());
    }
}

面向对象之构造方法

构造方法: 主要用来给对象的数据进行初始化

构造方法格式:

  • a:方法名与类名相同
  • b:没有返回值类型,连void都没有

构造方法注意事项与重载:

  • 如果你不提供构造方法,系统会给出默认构造方法
  • 如果你提供了构造方法,系统将不再提供
  • 构造方法也是可以重载的,重载条件和普通方法相同

代码示例:

package com.itheima_08;
/*
 * 构造方法:
 *      给对象的数据进行初始化
 *
 * 格式:
 *      方法名和类名相同
 *      没有返回值类型,连void都不能写
 *      没有具体的返回值
 *
 * 构造方法的注意事项:
 *      A:如果我们没有给出构造方法,系统将会提供一个默认的无参构造方法供我们使用。
 *      B:如果我们给出了构造方法,系统将不在提供默认的无参构造方法供我们使用。
 *        这个时候,如果我们想使用无参构造方法,就必须自己提供。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值