当前位置:首页 » 《随便一记》 » 正文

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

3 人参与  2022年12月17日 15:21  分类 : 《随便一记》  评论

点击全文阅读


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

一、面向对象和面相过程二、类的定义三、对象的使用四、手机类的创建和使用五、单个对象的内存图六、两个引用指向同一内存图七、成员变量和局部变量八、priavte九、this关键字十、封装十一、构造方法十二、标准类

一、面向对象和面相过程

在这里插入图片描述

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

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

在这里插入图片描述

二、类的定义

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());    }}

点击全文阅读


本文链接:http://zhangshiyu.com/post/49935.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1