07、封装

01、封装之Private

        一、封装:是指隐藏对象的属性和实现细节,仅对外提供·公共访问方式

        二、引言

                1、现在数据的赋值是没有问题的,但是不符合常理。这样的数据其实是不真实的。那么,我们要保证数据的真实性,怎么办呢?那么就必须对数据进行校验。要想做校验,就必须有逻辑结构语句。要想写逻辑结构语句,就必须定义方法。

                2、但是,现在即使我们写了方法,别人还是可以通过:对象.成员变量直接使用。1所以,我们应该先解决根本问题,让外界不能直接通过 对象名,成员变量访问数据。怎么办呢?Java就提供了一个修饰符 Private。

        三、privte:

                是一个关键字,表示私有的意义,可用于修饰成员变量和成员方法,被他修饰完毕之后的内容,在其它类中不呢直接被访问。

        注:private仅仅是封装的一种体现,因为类,函数等其实也是一个封装的体现

02、构造器概述和使用

        一、构造器格式及特点:

                A:方法名必须和类名保持一致

                B:没有返回值类型

                C:没有具体返回值

        二、构造器的作用

                给对象进行初始化

        三、注意事项:

                A:如果没有给出构造方法,那么程序会默认给出一个无参构造器

                B:如果给了,系统将不再自动给出,一般情况下我们会自己再写一个无参构造器

                C:构造方法的重载

                        1.在同一个类中

                        2.方法名相同

                        3.参数列表不同(顺序,数据类型,数量)

                        4.只有返回值类型不同,不能构成方法重载

03、this关键字的概述和应用

        一、this的概述

                this代表其所在方法所属对象的引用。换言之:this代表本类对象的引用

        二、this的应用场景

                区分局部变量和成员变量

public class Person {
    private String name;
    private int age;

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

                调用本类的其他构造方法

public class Student {
    private String name;
    private int age;
    private String grade;

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

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

                作为方法的返回值

public class Calculator {
    private int result;

    public Calculator add(int num) {
        result += num;
        return this;
    }

    public Calculator subtract(int num) {
        result -= num;
        return this;
    }

    public int getResult() {
        return result;
    }
}

                作为参数传递给其他方法

public class Shape {
    private int x;
    private int y;

    public Shape(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public void moveTo(int newX, int newY) {
        move(newX - x, newY - y);
    }

    private void move(int deltaX, int deltaY) {
        x += deltaX;
        y += deltaY;
    }
}

04、代码块儿的概述

        一、概念

                就是用{}括起来的代码

        二、

                A:局部代码块

                        概念:定义在方法中的代码块儿,叫局部代码块儿

                        作用:让变量尽可能早的从内存中消失,提高效率

                B:构造代码块

                        概念:定义在方法代码块儿中,叫构造代码块儿

                        作用:把所有构造方法中的共同的内容定义在构造代码块中

                        总结:构造代码块先执行,然后再执行构造函数

05、对象的初视化过程

        Person p=new Person();在内存中是怎么执行的?

                做了如下几件事:

                        A:把Person.class文件加载到内存。(类加载器)

                        B:在栈内开辟一个变量空间。给P使用。

                        C:new Person()就会在堆内存开辟空间,

                        D:方法进方法区,有类名做标记。并且,同时成员变量进堆内存并给出了默认初始化值。(name:null age:0)

                        E:对成员变量进行显示初始化

                        F:如果有构造代码块,可以在构造代码块中对成员变量赋值,

                        G:执行构造方法中对成员变量的赋值,

                        H:到此为止,对象初始化完毕,

                        I:把堆内存对象的首地址值赋值给栈内存的p变量

06、static关键字概述

        如果都是“中国”这个字符串,你每次创建对象都来一个。那么,如果你有10000个对象,哪就有10000个“中国”占用内存空间。

        而明明我们知道,他们都是“中国”的。假如,我们能够,让他们使用的国籍是相同的,也就是说,将来只存储一个“中国”,该有多好呢?

        针对这种情况,java提供了一个关键字叫:static他可以修饰成员变量和成员方法。

07、static关键字的特点

        A:随着类的加载而加载

        B:优先于对象存在

        C:为什么要使用静态呢?

                如果某个内容是被所有对象共享,那么,改内容就应该用静态修饰,没有被静态修饰的内容,其实是属于对象的特殊描述。

08、static的注意事项

        A:在静态方法中,是没有this关键字的。

                因为静态是随着类的加载而加载的,而this是对象创建才存在的

        B:静态方法只能访问静态成员变量和静态成员方法

        C:静态的内容可以用类名调用,也可以用对象名调用,但是一般推荐使用类名调用

09、Math类功能的使用

        Math中我们需要掌握的功能:

        一、成员常量

                Math.E

                Math.PI

        二、成员方法

                A:绝对值:Math.abs(参数类型  形式参数)

                B:天花板数:Math.celi(12.3);//结果是13.0

                C:地板数:Math.floor(12.3);

                D:四舍五入:Math.round(12.6);

                E:随机数:Math.random();

                F:两个数中的最大值:Math.max(12,53);

                G:两个数中的最小值:Math.min(11,66);

                H:三个数中的最大值:Math.max(Math.max(11,33),120);

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

记乐

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

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

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

打赏作者

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

抵扣说明:

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

余额充值