【Java寒假打卡】Java基础-面向对象

一、面向对象和面相过程

在这里插入图片描述

对象:客观存在的任何事物

类:现实生活中一类具有相同属性和行为的事物的抽象

在这里插入图片描述

二、类的定义

public class Phone{
    // 成员变量
    String brand;
    int price;

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

    public void sendMessage(){
        System.out.println("发短信");
    }
}

三、对象的使用

  • 创建对象
    类名 对象名 = new 类名()

  • 使用成员变量
    对象名.变量名

  • 使用成员方法
    对象名.方法名()

package com.ustc.base.DataFormat;

public class test18 {
    public static void main(String[] args) {
        // 创建对象
        Phone p = new Phone();

        // 使用成员变量
        System.out.println(p.brand);
        System.out.println(p.price);

        // 成员变量赋值
        p.brand = "苹果";
        p.price = 111111;
        System.out.println(p.brand);
        System.out.println(p.price);

        // 调用成员方法
        p.call();
        p.sendMessage();
    }

}

四、手机类的创建和使用


public class Phone{
    // 成员变量
    String brand;
    int price;

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

    public void sendMessage(){
        System.out.println("发短信");
    }
}


package com.ustc.base.DataFormat;

public class test19 {
    public static void main(String[] args) {
        Phone p = new Phone();

        p.brand = "xxxxx";
        p.price = 1111;

        p.call("xhsajfrdehsiu");
        p.sendMessage();
    }
}


五、单个对象的内存图

在这里插入图片描述

六、两个引用指向同一内存图

在这里插入图片描述

package com.ustc.base.DataFormat;

public class test19 {
    public static void main(String[] args) {
        Phone p = new Phone();

        p.brand = "xxxxx";
        p.price = 1111;

        Phone p1 = p; // 创建引用数据类型  p1和p指向同一块内存空间

        p1.price = 9999;
        System.out.println(p.price);
        System.out.println(p1.price);
    }
}


两个引用指向同一块内存空间,改变的是同一块内容

将引用置为null ,引用将找不到内存空间,不影响其他引用

package com.ustc.base.DataFormat;

public class test19 {
    public static void main(String[] args) {
        Phone p = new Phone();

        p.brand = "xxxxx";
        p.price = 1111;

        Phone p1 = p; // 创建引用数据类型  p1和p指向同一块内存空间

        p1.price = 9999;
        System.out.println(p.price);
        System.out.println(p1.price);

        p = null;// 地址置为null 找不到内存
        System.out.println(p.price);// 出现异常
    }
}


垃圾回收机制:

在这里插入图片描述

七、成员变量和局部变量

成员变量:类中方法外变量 随着对象消失而消失
局部变量:方法中变量 随着方法消失而消失

在这里插入图片描述

八、priavte

 由于类中成员变量很容易被修改,所以需要private关键字进行保护

private关键字:

  • 是一个权限修饰符
  • 可以修饰成员 成员变量和成员方法
  • 作用是保护成员不被别的类使用 被priavte修饰的成员只在本类中进行访问

在这里插入图片描述

package com.ustc.base.DataFormat;

public class Student {
    private String name;

    private int age;// 私有成员变量

    // 提供set和get方法接口
    public void setAge(int a)
    {
        age = a;
    }

    // get方法获取数据
    public int getAge(){
        return age;
    }

    // set方法  设置成员变量
    public void setName(String a)
    {
        name = a;
    }

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

    // 成员方法
    public void show(){
        System.out.println(name + " " + getAge());
    }
}

package com.ustc.base.DataFormat;

public class StudentDemo {
    public static void main(String[] args) {
        Student s = new Student();
//        System.out.println(s.name);// 报错 私有成员不可以直接获取

        // 打印成员变量
        System.out.println(s.getName());// 输出null
        System.out.println(s.getAge());// 输出0

        //设置成员变量
        s.setAge(99);
        s.setName("hdjashdj");
        System.out.println(s.getName());
        System.out.println(s.getAge());
    }
}


在这里插入图片描述

一个成员变量使用private关键字修饰 提供对应的get和set方法

九、this关键字

在这里插入图片描述

package com.ustc.base.DataFormat;

public class Student {
    private String name;

    private int age;// 私有成员变量

    // 提供set和get方法接口
    public void setAge(int age)
    {
//        age = a;
        this.age = age;
    }

    // get方法获取数据
    public int getAge(){
        return age;
    }

    // set方法  设置成员变量
    public void setName(String name)
    {
//        name = a;
        this.name = name;
    }

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

    // 成员方法
    public void show(){
        System.out.println(name + " " + getAge());
    }
}


使用set函数进行赋值,this指代的是成员变量,不带this修饰的变量指的是形参

在这里插入图片描述

十、封装

在这里插入图片描述

十一、构造方法

生成对象一开始就调用有参数构造方法,如果没有指明构造方法,系统会自动调用默认构造方法

package com.ustc.base.DataFormat;

public class Student {
    private String name;

    private int age;// 私有成员变量
    
    // 有参数构造方法
    public Student(String name,int age)
    {
        this.name = name;
        this.age = age;
        System.out.println("Student的有参数构造方法");
    }

    // 提供set和get方法接口
    public void setAge(int age)
    {
//        age = a;
        this.age = age;
    }

    // get方法获取数据
    public int getAge(){
        return age;
    }

    // set方法  设置成员变量
    public void setName(String name)
    {
//        name = a;
        this.name = name;
    }

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

    // 成员方法
    public void show(){
        System.out.println(name + " " + getAge());
    }
}


构造方法的注意事项:

  • 如果没有定义构造方法,系统会给出一个默认的无参构造方法
  • 如果定义了构造方法,系统将不再提供默认的构造方法
  • 如果自定义带参构造方法,还要使用无参构造方法,就必须再写一个无参数构造方法
  • 推荐每一个类都手写无参构造方法

十二、标准类

  • 所有成员变量私有化
  • 私有成员变量设置get和set方法
package com.ustc.base.DataFormat;

public class Student {
    private String name;

    private int age;// 私有成员变量

    // 有参数构造方法
    public Student(String name,int age)
    {
        this.name = name;
        this.age = age;
        System.out.println("Student的有参数构造方法");
    }

    // 提供set和get方法接口
    public void setAge(int age)
    {
//        age = a;
        this.age = age;
    }

    // get方法获取数据
    public int getAge(){
        return age;
    }

    // set方法  设置成员变量
    public void setName(String name)
    {
//        name = a;
        this.name = name;
    }

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

    // 成员方法
    public void show(){
        System.out.println(name + " " + getAge());
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

少写代码少看论文多多睡觉

求打赏,求关注,求点赞

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

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

打赏作者

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

抵扣说明:

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

余额充值