Java(类与对象)(2)

承接上次讲的

类与对象(1)

6.封装

6.1 什么是封装?

 对于一部手机来说,用户只需要使用它,并不需要知道它的内部结构,那么把手机套外壳就是封装

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互

 6.2访问限定符

Java中提供了四种访问限定符

protected:主要是用在继承中,继承部分详细介绍

default:什么都不写时的默认权限

public:可以被任何其他类访问

private:只能在本类中使用

注意:default只能在本包中使用

6.3封装扩展之包

6.3.1什么是包

为了更好的管理类,把多个类收集在一起成为一组,称为软件包

比如把不同的歌曲放在不同的文件夹内

值得一提的是:在同一个工程中允许存在相同名称的类,只要处在 不同的包中即可

6.3.2导入包中的类

public class Test1 {
    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6};
        System.out.println(Arrays.toString(array));
    }
}

比如我要打印一个字符串

import java.util.Arrays;

使用 import语句导入包

import后接的就是文件的路径

如果需要使用 java.util 中的其他类, 可以使用 import java.util.*

*为通配符,带上这个可以使用该路径下所有的包

但是我们更建议显式的指定要导入的类名. 否则还是容易出现冲突的情况

在存在俩个相同类名的情况下需要输入完整的类名。

可以使用import static导入包中静态的方法和字段。

int sum = (int) Math.sqrt(Math.pow(x,2) + Math.pow(y,2));

比如我要打印这个要导入这个包

import java.lang.Math.*;

使用import static

import static java.lang.Math.*;

就可以不用输入前缀

int sum = (int) sqrt(pow(x,2) + pow(y,2));

6.3.3 自定义包

右键src

一般包名写成小驼峰的形式

结果就是这样的

如果不是这种情况就点击右上角的小齿轮

同时在文件夹中也能找到这里就不赘述

7.Static

7.1Static修饰成员变量的特性

static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。

1.访问形式:可以通过对象的引用访问,也可以通过类名访问,不需要初始化(推荐使用类名来访问)

public class Student {
    public static String StudentClassroom;
}

2.不存在于堆栈,存在于方法区

3:随类的加载而创建,随类的卸载而销毁

比如下面的这个代码 设置count的初始值为100,创建多个对象之后count++的结果依然是103,这也说明了Static修饰的变量都存在于方法区

7.2Static修饰成员方法的特性

1.不属于某个具体的对象,属于类方法

2.访问形式和上面相同,可以通过对象调用或者类名,同样推荐使用后者

3.不能在静态方法中访问任何非静态成员变量

4.静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用

通常成员变量用private修饰,那就要通过静态方法来获取成员变量

public class Student {
    private static String classroom = "122";

    public static String getClassroom(){
        return classroom;
    }
}

8.代码块

8.1 代码块概念以及分类

使用 {} 定义的一段代码称为代码块

分为以下四种:

普通代码块 构造块 静态块 同步代码块

8.2普通代码块

public class Test {
    public static void main(String[] args) {
        {
            int x = 100;
            System.out.println(x);
        }
    }

8.3构造代码块

构造代码块一般用于初始化实例成员变量

public class people {
    private String name;
    private String sex;
    private int age;

    {
        this.name = "hhx";
        this.sex = "woman";
        this.age = 20;
    }
    public void show(){
        System.out.println(" name: " + name + " sex: " + sex + " age: " + age);
    }
}

8.4静态代码块 

 使用Static修饰的代码块叫做静态块,用来初始化静态成员变量

public class people {
    private String name;
    private String sex;
    private int age;
    private static String girlname;
    private static int girlage;

    {
        this.name = "hhx";
        this.sex = "woman";
        this.age = 20;
    }
    public void show(){
        System.out.println(" name: " + name + " sex: " + sex + " age: " + age);
    }

    public people(){
        System.out.println("hhx is bro");
    }

    static{
        girlname = "hhxhhxhhxhhx";
        girlage = 20;

        System.out.println("hhx is sister");

    }


}

注意:

静态代码块不管生成多少个对象,其只会执行一次

静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的

如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)

实例代码块只有在创建对象时才会执行

由此可见执行顺序静态代码块 > 构造代码块

第一次写若有不足请及时指正

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值