从零开始学java--包的访问控制

面向对象基础篇

包的访问控制

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

包声明和导入

新建包: 右键 src -> 新建 -> 软件包

  • 包名通常会用域名的颠倒形式,如baidu.com域名,包就可以命名为com.baidu。
  • 包名要和代码路径相匹配。
  • 如果一个类没有 package 语句, 则该类被放到一个默认包中。

我们可以将类放入到包中:

package com.test; //在放入包中,需要在类的最上面添加package关键字来指明当前类所处的包

public class Main {
    public static void main(String[] args) {


    }
}

不同的类可以放在不同的包中

当我们使用同一个包中的类时,直接使用即可。而当我们需要使用其他包中的类时,需要先进行导入才可以:

package com.test; 

import com.test.entity.Person;//使用import关键字导入其他包中的类

public class Main {
    public static void main(String[] args) {
        Person person=new Person();//导入后才可以使用

    }
}

如果一个包中有多个类,可以使用*表示导入这个包中的全部类:

import com.test.entity.*;

有歧义的情况下需要使用完整的类名。

访问权限控制

四种访问权限

当前类同一个包下的类不同包下的子类不同包下的类
public

protected×
默认××
private×××

我们创建的普通类不能是protected或private权限

封装、继承和多态

面向对象程序三大特性:封装、继承、多态

类的封装

编写时一般将成员变量私有化:

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

    public Person(String name, int age, String sex) { //构造方法需声明为公共
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public String getName() {
        return name;    //对象的名字必须通过getName()方法来获取,并且只能得到名字值,外部无法修改
    }

    public int getAge() {
        return age;
    }

    public String getSex(){
        return sex;
    }
}
public class Main {
    public static void main(String[] args) {
        Person person=new Person("小明",20,"男");
        System.out.println(person.getName());
    }
}

额外的操作:小明可以修改名字,但是名字中不能包含“小”字

    public void setName(String name){
        if(name.contains("小"))return;
        this.name=name;
    }

也可以将构造方法改成私有的,需要通过内部的方式来构造对象

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

    private Person() {}  //不允许外部使用new关键字创建对象

    public static Person getInstance(){  //而是需要使用我们独特的方法来生成对象并返回
        Person person=new Person();
        person.name="小明";
        return person;
    }

......

下篇继续...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值