1、类

(1)在java中有public、protected、private三种显示的修饰符用于控制可见性,package不是显示的修饰符,它是隐含的,即如果在类、变量等前没加显示的可见性修饰符,那它就是package级别的。如果在类的定义中没有指定package,那么java会把它放在缺省包中,一般来说这个缺省的包就是当前目录。
(2)在子类中的方法如果重载了父类的方法,那么该方法的可见级别应更底或者相同,如父类中的方法是public,那么子类中方法必须是public。
(3)在java中,一般来说,变量成员最好是private,对它们的访问可以通过public的方法,在这些方法中可以做些控制以保证数据的一致性。这些方法名一般以get和set做为前缀。

2. 包
包名一般为小写,而类名的第一个字母一般为大写,这样在引用时,可以明显的分辨出包名和类名。如果在类的定义之前没有使用package定义包名,那么该类就属于缺省的包。

2.1 Hello Package
首先通过一个简单的package的定义来学习package的使用:

package testPackage;

public class Test
{
 public static void main(String args[])
 {
  mNode node = new mNode();
  node.print("hello");
 }
}
说明:
(1) 使用package关键字指明类所在的包;
(2) package语句必须在文件的最前面;
(3) 编译时可使用javac –d . Test.java自动产生包需要目录;
(4) 可以使用java testPackage.Test来执行编译后的代码;
2.2 包的几个作用:
(1) 可以更好的组织类,包与文件夹类似,文件夹可以将不同的文件放在同一个文件夹中,而包也可以将不同的类文件放在同一包中;
(2)减少类名的冲突问题,这也与文件夹类似,同一文件夹中的文件不能重名,不同文件中的文件可以重名,同一包中的类名不能重复,不同包中的类名可以重复;
(3) 对包中的类起了一定的保护作用,详见java的访问控制;
2.3 import的使用
(1) 直接引用指定的类,如import java.util.Vector;
(2) 引用一个包中的多个类,如importjava.awt.*。更确切的说,它并不是引用java.awt中的所有类,而只引用定义为public的类,并且只引用被代码引用的类,所以这种引用方法并不会降低程序的性能;
(3) *号代替类名,在不能代替包名,如importjava.awt.*,只引用java.awt下的类,而不引用java.awt下的包;
(4) import java.awt.F*,这种使用方法是错误的;
(5) import语句在所有类定义之前,在package定义之后;
(6) import只告诉编译器及解释器哪里可以找到类、变量、方法的定义,而并没有将这些定义引入代码中;
2.4 包中类的使用
有以下几种机制可以使用包中的类:
(1)如果要使用的类是属于java.lang包的,那么可以直接使用类名来引用指定的类,而不需要加上包名,因为包java.lang不用显示使用import,它是缺省引入的;
(2)如果要使用的类在其它包(java.lang除外)中,那么可以通过包名加上类名来引用该类,如java.awt.Font
(3) 对于经常要使用的类(该类在其它包中),那么最好使用import引用指定的包,如java.awt.*
(4) 如果import引入的不同的包中包含有相同的类名,那么这些类的使用必须加上包名
(5) 接口也可以属于某个包,也可以使用import引入其它包中的类和接口

public,protected,private,static,什么时候用,为什么要用,怎么用

每个类都创造了有自己的名字空间,指方法和变量可以知道彼此的存在,可以使用。 
public类不但可以被同一程序包中的其它类使用,别的程序包中的类也可以使用; 
变量和方法的修饰字public、protected、private: 
public:任何其他类、对象只要可以看到这个类的话,那么它就可以存取变量的数据,或使用方法。

protected变量和方法: 
如果一个类中变量或方法有修饰字protected,同一类、同一包可以使用。不同包的类要使用,必须是该类的子类,可以存取变量或调用。

同包的类

不同包但是是子类

private不允许任何其他类存取和调用; 
当子类中的变量名与父类的相同,原来的变量被遮盖。 
方法的覆盖(overriding)和重载(overloading)。子孙类中定义的方法和祖先类中某个方法同名、同参数行,则祖先类中的该方法被覆盖;方法的重载是指一个对象的多态性,即多个方法用相同的名称,但参数行不同。

final: 
final在方法之前,防止该方法被覆盖; 
final在类之前,标是该类不能被继承; 
final在变量之前,定义一个常量。

static: 
在变量或方法之前,表明它们是属于类的; 
静态变量在各实例间共享,如果是public静态变量,则其它类可以不通过实例化访问它们; 
静态方法称为类的方法,因此不用实例化即可调用(面向过程) 
一个对象的方法可以访问对象的数据成员,尽管不属于方法的局部变量;一个类的方法只能访问自己的局部变量。

public,protected,private,static,final的区别(转载)的更多相关文章

  1. 浅析java修饰符之public default protected private static final abstract

    浅析java修饰符之public default protected private static final abstract 一   修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 ...

  2. Java中public,private,final,static等概念的解读

    作为刚入门Java的小白,对于public,private,final,static等概念总是搞不清楚,到底都代表着什么,这里做一个简单的梳理,和大家分享,若有错误请指正,谢谢~ 访问权限修饰符 pu ...

  3. [转] Java中public,private,final,static等概念的解读

    作为刚入门Java的小白,对于public,private,final,static等概念总是搞不清楚,到底都代表着什么,这里做一个简单的梳理,和大家分享,若有错误请指正,谢谢~ 访问权限修饰符 pu ...

  4. 【转载】C++中public,protected,private访问

    第一:private, public, protected 访问标号的访问范围. 假如我们约定: 类内部-----指的是当前类类型的定义中,以及其成员函数的声明和定义中: 类外部-----指的是不在当 ...

  5. 【转】C++易混知识点5:实例讲解Public Protected Private作用域,继承的区别和用意

    大学生涯,涉及到类的作用域,继承都是用的public 共有继承,当时也没想那么多,觉得共有继承多方便,多简单,反正没有太多的限制,不管是类的成员或者是基类的成员函数都可以访问.没有深究.其实这里面真是 ...

  6. JAVA修饰符类型(public,protected,private,friendly)

    转自:http://www.cnblogs.com/webapplee/p/3771708.html JAVA修饰符类型(public,protected,private,friendly) publ ...

  7. JAVA类型修饰符(public,protected,private,friendly)

    JAVA类型修饰符(public,protected,private,friendly) public的类.类属变量及方法.包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包 ...

  8. private static final long serialVersionUID = 1L;

    作者:郭无心链接:https://www.zhihu.com/question/24852886/answer/117314768来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  9. Java中static、final、static final的区别(转)+transient

    说明:不一定准确,但是最快理解. final: final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final ...

随机推荐

  1. 网络流(自行理解的Dinic)

    自行理解的Dinic 注释即讲解 #include<bits/stdc++.h> ; using namespace std; int read() { ,w=; ;ch=getchar( ...

  2. C#递归删除进程及其子进程

    /// <summary> /// 结束进程和相关的子进程 /// </summary> /// <param name="pid">需要结束的 ...

  3. Codevs 1501 二叉树的最大宽度和高度

    1501 二叉树最大宽度和高度 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 给出一个二叉树,输出它的最大宽度和高度. 输入描 ...

  4. net7:Web用户控件ascx的使用及其动态加载

    原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] Web用户控件test.ascx的源代码: using System;using System;using Sys ...

  5. http client transfer

    背景 在平时工作中我偶尔会写一些脚本监控HTTP接口的健康状况,基本上都是发送HTTP GET或HTTP POST请求,然后检测响应内容.但一直用的是WebClient和HttpWebRequest, ...

  6. 前端居中模板(常用HTML模板)

    0.效果:

  7. 获取当前网络中的电脑数目及MAC-通过MAC查找IP-通过IP查询机器名

    Microsoft Windows [版本 ] 版权所有 (c) Microsoft Corporation.保留所有权利. C:\Users\Administrator>netsh netsh ...

  8. dedecms--二次开发文章内容页未登录禁止访问和同一个帐号只允许一个ip登录

    最近在用dedecms二次开发会员功能,领导要求,会员未登录不允许访问文章内容页,和同一个账号只允许一个ip登录,我是将这两个在一起判断的,判断session存不存在,不存在的情况下就是未登录,这时候 ...

  9. python 之 实现su 到root账号

    简单记录一下如何通过python代码在linux系统下实现自动su - 切换到root账号, 使用到的模块:paramiko 使用到的方法:invoke_shell  功能:在SSH server端创 ...

  10. objective-c 类目(Category)和延展(Extension)

    类目的基本概念: 如果有封装好的一个类,随着程序功能的增加,需要在类中增加一个方法,那我们就不必在那个类中做修改或者再定义一个子类,只需要在用到那个方法时添加一个该类的类目即可. 1.在类目定义的方法 ...