java 包权限 子包_Java 包和访问权限

一开始学Java,就用的eclipse。对包的印象就是右键新建而已。至于导入包,等报错了再导。

被IDE奴役的傻孩子=。=

现在就清晰地梳理一遍吧~

本文基于Mars老师的Java4Android视频。

包的作用

软件包为Java类提供了命名空间。根据包名,会生成相应的文件夹,将类存储在里面。

打包时,使用package指令。如下所示:

package org.sia;

class Test {

public static void main(String args []) {

System.out.println("Hello,package!");

}

}

一个类的全名,应该是“包名” + “.” + “类名”。

比如上面的代码,类名应该是 org.sia.Test。

包名的命名规范

包名所有字母小写

包名一般情况下,是你的域名倒过来写,再加上包的用途。比如假装我有一个域名=。=,是sia.org,有一个包下面放的是用户相关的类,包名就应该是package org.sia.user。包名中每一个 “.” 都生成一层新的文件夹。

Java当中的访问权限

分为四大类:

1、 public:公共权限

既可以修饰类,又可以修饰成员变量和成员函数。public表示没有限制,你行你上,没人拦着。在同一个或不同的包中,都可以访问。

public类中的成员变量和函数,只有被public修饰时,才可以被外界包访问。

如果一个类被声明为public,那么类名必须和文件名一样。(被default修饰时,就可以不同,不过不推荐这样做)

如果在别的包里,生成public修饰的类中对象的引用,类名必须用全名。即:

package org.sia;

public class Person {

public String name;

public void introduce() {

System.out.println("name");

}

}

package org.coding;

class Test {

public static void main(String args []) {

//声明一个Person的引用

org.sia.Person p = new org.sia.Person();

p.name = "sia";

}

}

但是这样非常麻烦,所以可以先导入要用的类或者包。

import org.sia.Test; //或者import org.sia.*;

class Test {

public static void main(String args []) {

Person p = new Person();

p.name = "sia";

}

}

2、private:私有权限

能够修饰变量和函数,表示变量和函数只能在当前类中使用。

只能修饰内部类,不能修饰其他的类。

3、default:包级别访问权限

变量、函数和类前面不加权限修饰符,就是default权限。

default权限,表示在同一个包中可以自由访问。

4、protected:受保护权限

这个权限主要和继承有关系。

protected首先拥有和default权限一样的功能,但是该权限只能修饰成员变量和成员函数。

protected还允许跨包继承。注意,它和public的区别在于,跨包的情况下,也只有子类能使用这些成员,被public修饰的,没有继承关系也能用。

5、继承中的权限问题

如果父类是public,子类和父类不在一个包中,子类可以继承到父类中default权限的成员变量和成员函数,但是由于权限不够,无法使用。(之所以说子类可以继承,是因为编译报错不是找不到该成员,而是权限问题无法访问)。

如果父类是public,父类中的成员变量和成员函数是private,则只能在父类中使用它们。

总结:

public > protected > default > private ;

修饰类,除了内部类可以用private,只能用public,或者不写(就是default);

权限,应该尽可能的小,这是面向对象封装性的体现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python动态表情包下载_Python从eif中导出qq表情的gif图片

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#!/usr/bin/pythonTestfrom sys import stdoutfrom time import sleepffile(t.eif,rb)resultDirresultreadBytesreadingBytetempArr3[,,]tempArr8[,,,,,,,]#End Of Gif In EifstartFlag[\x47,\x49,\x46]endFlag1list(49454E44AE426…

java中dll在cas中不生效_java中你所不知道的CAS操作

1.CAS是什么Compare and Swap(比较并操作),由处理器架构支持,语义是如果当前值V和旧值A相同,则将当前值修改为B,如果不相同则不修改。CAS操作采用的是乐观锁技术,当多线程同时修改某个变量时只有一个成功,其…

内存条上面参数详解_为什么买内存条要看时序?别以为内存频率高性能就好

2016年开网吧买了400多根DDR4 8G内存条,一根180。2017年网吧赔了钱,我把电脑卖了,内存600一根,结果开网吧的钱赚回来了。囤内存挣回了开网吧的钱转眼间到2019年,内存就跌回了原来的价钱,200多块就又能买到D…

java了解异常_ID检测_Java入门第三季7-1简易扑克牌游戏(自定义玩家个数,玩家个数和ID异常检测)...

玩家类:package playingCardsGame;import java.util.ArrayList;import java.util.List;/** 玩家类*/public class Players {int ID;String name;List handCards;Players(int ID, String name){this.ID ID;this.name name;this.handCards new ArrayList();}}手牌类…

android 获取monkey日志_Android压力测试:monkey压力测试实战

主要分享的主题是 Android App 专项测试,通过 monkey 进行压力测试。一.测试步骤1.安装ADB2.连接被测手机和电脑3.打开CMD命令行4.输入monkey命令adb shell monkey -p your.package.name?--pct-touch 30?--ignore-crashes ?--ignore-timeouts--throttle 250?-s …

java工程怎么构造成moven_将普通java工程结构改为由maven管理的工程结构域

第一次尝试些博客记录一下自己的学习心得!1. http://maven.apache.org/download.cgi 这是maven 的下载链接进入链接下载一个maven 包这是我的windows10 系统下载的版本2 . 将下载好的文件解压后放入任意位置(一般建议放到自己常用的文件夹下边)并记住该路径G:\xiangmuwar …

php mysql 聊天室_聊天室phpmysql(一)

//第一个页面 name"index1.php"include "../signup/mysql.php";$time1time();//$userid983530409;echo $n;if($n1){$useridtime();$nick"g".$userid;$last_time$userid;$sql"insert into chat_user (userid,id,last_time) values ($us…

在python中求小于100的所有合数_python输出100以内的质数与合数

__author__ Yue Qingxuan# -*- coding: utf-8 -*-#求质数p[2]for i in range(2,101):for temp in range(2,i):if i%temp0:breakprint(i,i,temp,temp)elif tempi-1:p.append(i)print(\n以下打印质数:)print(p)#求合数list[]for i in range (4,100):for j in range(2…

python 函数进度条怎么_刷新你对进度条的认识,用python写出不一样的进度条

1 简介在日常工作中,我们运行程序经常会用到「循环迭代」,假如这个执行时间很短,那倒也无所谓。但是有一些过程耗时蛮长的,给其加上「进度条」(progress bar),可以帮我们监控代码执行进度,以及过程出现异常…

acer软件保护卡清除工具clear_使用Windows 10内置工具释放硬盘空间的最佳方法

如果您的磁盘空间不足,可以使用 Windows 10 中内置的工具来清理垃圾文件、应用程序和游戏等,以优化硬盘空间。使用这些清理工具不仅能够释放空间,而且还有助于提高系统性能。下面小编就为大家汇总介绍 几种种最佳快捷方法,来释放 …

python中astr是啥_python的基本操作

该来的还是来了,早先某个大胖子建议我写关于python基本操作的博客,当时没上心,现在来补点账,也姑且算是对往昔一点回忆吧。对了,那胖子,姓王,所幸不住我隔壁。闲言少叙,python和pych…

python字典popitem和pop_python字典popitem_python 字典之pop() and popitem()

字典删除方法:pop()和popitem(),这两种种方法的作用不同,操作方法及返回值都不相同。pop (key[,default])其中,key是必选参数,必须给出,default是可选参数,可以不给出。如果键值key在字典中存在…

python20个常用语法_这20个常规Python语法你都搞明白了吗?

原标题:这20个常规Python语法你都搞明白了吗?还没关注?Python简单易学,但又博大精深。许多人号称精通Python,却不会写Pythonic的代码,对很多常用包的使用也并不熟悉。学海无涯,我们先来了解一些…

java ftp上传超时_有关java的ftp上传文件时断网的问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我有一个java的ftp程序,他既是客户端又是服务端,我把程序放在两台电脑上运行,computer1和computer2,在computer1为文件上传端,computer2为文件的接收端,在comp…

在python中用递归的方法编程_python基础之函数,递归,内置函数

阅读目录一 数学定义的函数与python中的函数初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把…

java spring 多数据库_java – 使用多个数据源/数据库的Spring-Hibernate

我正在开发一个使用Spring MVC 3和Hibernate的Web应用程序我想为我的Web应用程序使用2个数据源MySql和Oracle数据库,我已经阅读了很多关于“spring-hibernate multiple datasource / database”的教程和问题解决方法例如 :等等.但是当我每次运行它时,配置只读取我的…

canal mysql从库_大厂如何基于binlog解决多机房同步mysql数据(一)?

目录前言单一IDC多IDCmysql主从同步数据同步方案多机房mysql同步方案优化同步方案同步方案的问题如何解决重复插入对于DDL语句处理如何解决唯一索引冲突如何解决数据回环问题总结前言小伙伴们是否经常听说多机房部署,异地容灾?什么两地3中心,…

java语言怎么建立窗口awt,java.awt.Frame类:创建窗口

创建窗口是 AWT 编程的第一步,窗口是所有组件和面板的容器。在 Java AWT 中,我们使用 Frame 类来创建窗口。Frame 中文字意是“框架”,它的主要功能是建立窗口。AWT 建立窗口的步骤如下:设计 Frame 类对象,建立空白窗口…

sql数据导入错误代码: 0x80004005_SQL入门第八关 项目实战

不知不觉,学SQL已经一个多月了,每天下班学一个小时,有空做做练习题。从之前的焦虑到现在已经有了一定的自信了,猴子的课程真的很适合小白入门,尤其是SQL学习群里,助教老师很尽责,每个问题都会解…

虚拟主机选择php版本,虚拟主机的php版本如何选择

虚拟主机如何选择php版本?虚拟主机选择PHP版本,这是根据网站程序设置的。例如,新版本的WordPress需要PHP5.6和更高版本,而旧版本,如WordPress4,可以使用PHP5.2、5.3和其他更低版本。虚拟主机的PHP版本是什么…