Java类和对象[③封装]

本文详细解释了Java中的四种访问修饰符(private,default,protected,public)的作用范围,以及封装的概念,包括如何使用private变量和设置get/set方法。还介绍了包的概念、静态成员变量和静态方法的特点及其应用。
摘要由CSDN通过智能技术生成

一:四种访问修饰限定符

 ①private:私人;只有自己知道

💚使用范围:同一包中的同一类

💛(private不能修饰类)


②default:默认值,也被称为包访问权限;什么都不写时就是default,

💚使用范围:同一包中的同一类/同一包中的不同类

💛(default不仅可以修饰方法/成员变量,还可以修饰类)


③protected:用于继承

💚使用范围:同一包中的同一类/同一包中的不同类/不同包中的子类

💛(protected不仅可以修饰方法/成员变量,还可以修饰类)


④public:公开;谁都能看到

💚使用范围:同一包中的同一类/同一包中的不同类/不同包中的子类/不同包中的非子类

💛(public不仅可以修饰方法/成员变量,还可以修饰类)


💗注意:一般情况下成员变量设置为private,成员方法设置为public

二:封装

(1)概念

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


💛把类的实现细节进行隐藏,你只需要用这个类即可,关于它怎么实现的你不要管

(2)封装使用的限定符

private


💜被private修饰的属性,只能在当前类使用,别的类无法访问

(3)private变量的使用

🌟 问题:private修饰的变量只能在当前类使用,那么如果我们需要在外类使用该怎么办?

💖方法设置接口,即写一个方法

💙(设置用set;获取用get)

💚记住,只要private修饰变量,就set和get


💛快速创建set/get方法:右键代码页 ➯ generate ➯ Getter and Setter ➯ 点击需要的变量

class student{
    //使用private修饰变量,就证明只能在student类使用
    private String name;
    private int age;

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

    public void setName(String name) {   //设置名字
        this.name = name;
    }

    public int getAge() {       //获取年龄
        return age;
    }

    public void setAge(int age) {   //设置年龄
        this.age = age;
    }
}

public class hlizoo {
    public static void main(String[] args) {
       student s1 = new student();
       s1.setName("hlizoo");
       s1.setAge(18);
       System.out.println("这位同学名字叫"+s1.getName()+","+"他的年龄是"+s1.getAge()+"岁");
    }
}

三:封装扩展之包

(1)包的概念

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


②包其实是Java当中组织类的一种方式


③当你导入相应的包,包里面包含的类你就可以使用了


④同一个工程中允许存在相同名称的类,只要处于不同包即可

(2)常见的包

1. java.lang:系统常用基础类(String、Object)

(由编译器自己导入,不需要手动import即可使用)


2. java.lang.reflect:java 反射编程包


3. java.net:进行网络编程开发包


4. java.sql:进行数据库开发的支持包


5. java.util:是java提供的工具程序包。(集合类等) 非常重要


6. java.io:I/O编程开发包

(3)导入包中的类

💓①方法:import java.包名.类名;

💚例如:import java.util.Scanner;


💓②通配符:*

💛作用:充当任何类;不是导入包中的所有类,而是你用到哪个类它帮你导入哪个类

💚例如:import java.util.*;   ➯当你用到util当中的哪个类就帮你导入哪个类


💓③更建议显式的指定要导入的类名,否则还是容易出现冲突

💚例如:util和sql里面都有Date类,如果都加通配符而不指定类名的话,编译器就不知道该使用哪个,从而造成报错

 💛修改:


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

💚例如:导入lang包中Math的静态方法


💓⑤导入的包如果没用到就变灰色

(4)自定义包

1.基本规则

①在文件的最上方加上一个package语句指定该java文件在哪个包中


 ②包名尽量指定成唯一的名字

通常会用公司的域名的颠倒形式(例如 com.baidu.www ) 


③包名要和代码路径相匹配

例如创建com.baidu.www的包, 那么会存在一个对应的路径com/baidu/www来存储代码


④如果一个类没有 package 语句, 则该类被放到一个默认包中

2.操作步骤

①在 IDEA 中先新建一个包:右键 src  ➯ new新建  ➯ package包


②在弹出的对话框中输入包名

例如:com.baidu.com


③在包中创建类, 右键包名 ➯  new新建  ➯ Java Class类  ➯  输入类名

例如:在com.baidu.com包中创建一个类hlizoo


④同时我们也看到了, 在新创建的 hlizoo.java 文件的最上方, 就出现了一个 package 语句

四:static成员

(1)static修饰成员变量

1.概念

static修饰的成员变量,称为静态成员变量,或者叫类成员

2.特性

①不属于某个具体的对象,是所有对象所共享的,共用的


②静态成员变量不属于对象,属于类

因此静态成员变量不存储在某个对象的空间


③静态成员变量/类变量存储在方法区中

(我们之前说的对象存储在堆上,成员变量储存在对象里)


④既能通过对象访问,也能直接通过类名访问(推荐后者)

静态成员的访问其实不需要对象,不用new对象直接类名访问即可


⑤随类的加载而创建,随类的卸载而销毁,伴随类的一生


静态成员变量不能用this访问,因为它不属于对象


⑦即使为null,不指向任何对象,也可以用静态成员变量,因为静态成员变量属于类

3.区分三种成员变量

①普通成员变量每个对象都有一份

💙创建范围:类内方法外

💚不初始化有默认值


②静态成员变量所有对象共用一份

💙创建范围:类内方法外,但被static修饰

💚不初始化有默认值


③局部变量

💙创建范围:方法内部

💚不初始化会报错

4.代码理解
public class Student {
    public String name;
    public static String classRoom = "317";  //静态成员变量classroom


    public static void main(String[] args) {
        // 静态成员变量可以直接通过类名访问
        // 连new对象都不用
        System.out.println(Student.classRoom);
    }
}

 (2)static修饰成员方法

1.概念

static修饰的成员方法,称为静态成员方法,或者叫类方法

2.特点

①静态方法不属于某个具体对象,是属于类


②既能通过对象访问,也能直接通过类名访问(推荐后者)


③静态方法里只能用带static的静态成员变量

静态方法里不能使用this


 ④静态方法中只能调用带static的静态方法


⑤静态方法无法重写,不能用来实现多态

3.代码理解
public class Student {
    public String name;  //非静态成员变量name
    public static String classRoom = "317";  //静态成员变量classroom

    public static String getclassroom(){   //静态方法getclassroom
        return classRoom;
    }

    public static void main(String[] args) {
        // 静态方法可以直接通过类名访问
        // 连new对象都不用
        System.out.println(Student.getclassroom());
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值