java 第七章 > 面向对象的基础(封装)

面向对象的基础

面向对象和面向过程的思想对比

  • 面向过程编程

是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的

  • 面向对象编程(oop)

是一种以对象为中心的编程思想,通过智慧对象实现具体的功能

-对象

客观存在的事物(万物皆对象)

类和对象
  • 类是对现实生活中一类具有共同书写和行为的事物的抽象
  • 组成

属性

例如,姓名,年龄…

行为

该事物能做的事

例如,学习,java编程开发

类的定义

类中,方法的外面

去掉Static关键字

步骤

  1. 定义类
  2. 编写成员变量
  3. 编写成员方法
public class 类名{
    //成员变量
    数据类型 变量;
    数据类型 变量;
    //成员方法
    方法1;
    方法2;
}
public class Student{
    String name;
    int age;
    public void study(){
    System.out.print("学习")
    }
}
创建和使用对象
类名 对象名 = new 类名();

1. 对象名.变量名
2. 对象名.方法名();
Student stu = new Student();

stu.name = "张三";
stu.age = 23;

stu.study();
案例

手机类

package Day7L.Phone;

public class Phone {
    String brand;
    int price;

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

    public void sendMassage(String name) {
        System.out.println("给" + name + "发短信");
    }
}

package Day7L.Phone;

public class TextPhone {
    public static void main(String[] args) {
        Phone ph = new Phone();
        ph.brand = "华为";
        ph.price = 4500;
        System.out.println(ph.brand);
        System.out.println(ph.price);
        ph.call("张三");
        ph.sendMassage("李四");
    }
}
成员变量和局部变量

成员变量:类中方法外

局部变量: 方法中的变量

封装
  • private关键字
private int age;
 public void set(int a){
     age = a;
 }
 
 public int get(){
     return age;
 }
  • 权限修饰符

  • 修饰成员

  • 只能在本类中访问

  • 用get 变量名()获取

  • 用set变量名(参数)设置

this关键字

this.name = name;

就近原则

成员变量和局部变量

成员变量是在全类,局部是方法内部

作用:可以调用本类的成员(变量,方法),解决局部变量和成员变量重名的问题

this:表示所在类对象的引用

  • 方法被那个对象调用,this就代表那个对象
封装
  • 三个特征:封装,继承,多态
  • 隐藏实现细节,仅对外暴露公共的访问方式

private私有只是封装的一种体现

  • 将代码抽取到方法中,这是对代码的一种封装
  • 把属性抽取到类当中,这是对数据的一种封装
  • 封装的常见体现

1.私有成员变量,提供setXxx和getXxx的方法

2.将代码抽取到方法中,这是对代码的一种封装.

3.将属性抽取到类当中,这是对数据的一种封装

  • 封装的好处

1.提高了代码的安全性

2.提高的代码的复用性

构造方法

-构建,创造对象的时候,所调用的方法

  • 格式
/*
    1.方法名与类名相同,大小也要一致
    2.没有返回类型,连void都没有
    3.没有具体的返回值(不能由return带回结果中的数据)
*/

public Student(){
    
}
  • 执行时机
  1. 创建对象的时候调用,没创建一次对象,就会执行一次构造方法
  2. 不能手动调用构造方法
构造方法的作用
  • 作用:用于给对象的数据(属性)进行初始化

注意事项

  1. 构造方法的创建
  • 如果没有定义构造方法,系统将给出一个默认的无参数构造方法
  • 如果定义了构造方法,系统将不再提供默认的构造方法
案例
package Day7L.Text;

/**
 * description:JavaSE teaching
 * author:sdjady
 * date:2021-01-04
 * time:14:24
 */
/*
    1. 使用private修饰
    2. 构造方法
        1.提供一个无参数构造方法
        2.提供一个带多个参数的构造方法
    3. 成员方法
        1.提供每个成员变量对应的setXxx()和getXxx()
        2.提供一个显示对象信息的show()
    4. 创建对象并为其成员变量赋值的两种方法
        1.无参构造方法
        2.带参构造方法
 */
public class Text1 {
    private String name;
    private int age;

    public Text1() {}

    public Text1(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return (name);
    }

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

    public int getAge() {
        return (age);
    }

    public void show(){
        System.out.println(name + "..." + age);
    }
}

package Day7L.Text;

/**
 * description:JavaSE teaching
 * author:sdjady
 * date:2021-01-04
 * time:14:36
 */
/*
    1. 使用private修饰
    2. 构造方法
        1.提供一个无参数构造方法
        2.提供一个带多个参数的构造方法
    3. 成员方法
        1.提供每个成员变量对应的setXxx()和getXxx()
        2.提供一个显示对象信息的show()
    4. 创建对象并为其成员变量赋值的两种方法
        1.无参构造方法
        2.带参构造方法
 */
public class Text2 {
    public static void main(String[] args) {
        //有参数构造方法
        Text1 text2 = new Text1("张三",23);
        text2.show();
        //无参数构造方法
        Text1 text1 = new Text1();
        //调用set和get
        text1.setName("李四");
        text1.setAge(24);
        text1.show();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aming_sth

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值