Java (public ,protected,private)简单程序分析

原创 2016年08月29日 20:17:27

publick可以同时修饰类和变量成员方法。如果用public修饰一个类名,如public class A{。。。}
,则表示该类可以被所有的其它类访问或引用,即其他类可以创建该类的实例,访问该类的所有可见成员变量,调用所有可见方法。
如果类成员(变量和方法)用public修饰,表示该类的成员不仅可以被其内部成员访问,而且可以被其它类直接访问,也就是说,外界可以直接存取共有数据和公有方法。
样例


class P1
{
    public int x;
    public void set_x(int i){
        x=i;
    }
    public void show_x(){
        System.out.println("x="+x);
    }
}

class Example {
    public static void main(String args[]){
        P1 Obj=new P1();
        Obj.set_x(3);
        Obj.show_x();
        Obj.x=10;
        System.out.println("x="+Obj.x);
    }

}

结果:
x=3
x=10
分析:
类P1中的所有成员都定义为public类型,因此其中的变量x和方法set_x(),和show_x()都可以被另一个类Example直接访问。

protected主要用于修饰类成员,说明该成员是被保护成员,除了可以被该类自身访问外,还可以被该类的子类及该类在同一个包中的其它类访问。
样例

class FirstClass {
    protected int n=3;
    protected void show_n(){
        System.out.println("n="+n);
    }
}
class SecondClass extends FirstClass{
    public static void main(String args[])
    {
        SecondClass abs=new SecondClass();
        abs.show_n();
        abs.n=10;
        abs.show_n();
    }
}

结果
x=3
x=10
分析:该样例演示的是在子类中访问父类中受保护的成员。SecondClass是FirstClass的子类,关键字extends表示它们之间是继承关系。由此列可以看出,子类可以直接访问父类中的被保护数据和方法。

private主要用于修饰类成员,表示该类成员只能被类自身访问,任何其它类(包括该类的子类)都无权修饰或引用。应该将不希望他人随意引用或修改的数据和方法设置为private,这将使得私有成员对其他类不可见,只有通过声明为public的方法才可以对这些私有数据进行访问,从而达到信息影藏和封装的目的。

样例

package Test;

public class Date {
    private int day,month,year;
    public void tomorrow(){
        day=day+1;
    }
    public void setDay(int d)
    {
        day=d;
    }
}
class DateUser{
    public static void main(String args[]){
        Date myDate=new Date();
//      myDate.day=21;错误
//      System.out.println("day="+myDate.day);
        myDate.setDay(21);      
    }
}

分析:类Date中3个成员变量都被定义为private类型,在本类中对它们的使用不受任何限制。但在另一个类DateUser中,访问其它类的私有成员是受限的,因此,mydate.day=21是错误的,但如果想对其中某个成员变量进行操作,可以通过类Date中的公有方法完成,如使用mydate.setDay(21)也可到达将day赋值21的目的。
提示:如果类成员前没有public,protected,private中的任何一个修饰符,则称它使用了默认(default)修饰符。这时,只有该类本身以及与该类在同一个包中的其他类才可以直接访问这些默认成员。
表格

    同一个类         同一个包          不同包中的子类          不同包中的非子类

private @
default @ @
protected @ @ @
public @ @ @ @

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java面向对象中四种权限(private,protected,public,友好型)详解

俗话说没有规矩就没有方圆,java作为一门严谨的面向对象的高级编程语言,自然对权限整个重要的问题有严格的控制。 Java一共有四种权限,private (私有),public(公有)。Protecte...

JAVA - 访问权限类型public/protected/default/private与修饰符

public,protected,private是Java里用来定义成员的访问权限的,另外还有一种是“default”,也就是在成员前不加任何权限修饰符。如: public   class   A{ ...
  • J080624
  • J080624
  • 2017年03月11日 10:58
  • 520

Java class 中public、protected 、friendly、private的区别

Java class 中public、protected 、friendly、private的区别 1.       类(class) 可见性修饰符: public—在所有类中可见,在其他包中可以...
  • fushou
  • fushou
  • 2011年11月10日 14:42
  • 5496

黑马程序员 java 修饰符类型(public,protected,private,friendly)

----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- JAVA修饰符类型(p...

Java 中4种访问修饰符 public/protected/default(friendly)/private

(1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。 (2)对于protect...

public、private、protected、default 访问权限的区别以及其它的Java修饰词

Java中public、private、protected 访问权限的区别 java平台中的public,protected,private是Java里用来定义成员的访问权限的,另外还有一种...

JAVA中的作用域public、private、protected、default深度理解,为什么这么做?

很多初学者(PS:我也是)在碰到作用域的理解时,很容易陷入误区,分不清楚protected和default的区别。好多教科书、论坛都误导了大家。            首先,讲下为什么java需要4...

java中private,public,protected详解

参照甲骨文的java文档:点击打开链接 访问级别修饰符确定其他类是否可以使用特定字段或调用特定方法。有两个级别的访问控制: 1.在顶级 - public或package-private(没有显式修饰...

public、protected、private in c++ and java

public、protected、private in c++
  • nabody
  • nabody
  • 2017年01月16日 14:22
  • 211

Java四种权限修饰符(public, default, protected, private)的用法和对比

四种权限修饰符(public, protected, default, private)的权限大小注意: default, 没有这个关键字, 它以为默认, 即什么也不加! 本类 同一个包下(子...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java (public ,protected,private)简单程序分析
举报原因:
原因补充:

(最多只允许输入30个字)