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和default的区别

除了default以外,其他都是Java语言的关键字。default代表的是对类成员没有进行修饰的情况。它本身也代表了一种访问控制符。对于它们4中访问控制符来说,它们都可以修饰类的成员(包括静态和非静...
  • qq_33642117
  • qq_33642117
  • 2016年08月09日 21:03
  • 1437

一张图说懂java中 private default protected public 的区别

private:修饰完全隐藏类的成员,这样,就不能从类的外边直接访问他们,我们提供set和get方法,保证类中数据域的安全。default:指默认修饰符,什么都不加,实际上它限制的范围就是一个包内可以...
  • yangbodong22011
  • yangbodong22011
  • 2015年11月08日 21:03
  • 4758

java中private, public,protected的区别

 java中private, public,protected的区别在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自...
  • ahpo
  • ahpo
  • 2007年10月15日 09:57
  • 10518

java中private,public,protected详解

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

用例子理解Java权限修饰符(private,default,protected和public)

权限修饰用于限定对象起作用的范围,也就是,在什么地方我们能够访问到这个对象,在什么地方我们访问不到这个对象了,这里的对象是指属性、方法、类和接口。 一、权限修饰符作用于属性和方法。private...
  • l294265421
  • l294265421
  • 2015年03月12日 11:23
  • 2511

方法访问权限控制(public,protected,package,private)

在java中,为了更好的控制代码的安全性,具有访问控制的级别,不同的关键字类访问控制如下表格: 关于表格的分析: (1)public(公开)、protected(友好)、private(私有)三种显...
  • yhl_jxy
  • yhl_jxy
  • 2016年07月04日 16:29
  • 2147

Java中 pubic 、 protected 、 default 、 private 的作用范围及区别

下表为Java访问控制符的含义和使用情况           类内部 本包 子类 外部包 public √ ...
  • u012843873
  • u012843873
  • 2016年05月03日 09:34
  • 2061

public,protected,private,static,final的区别

(1)在java中有public、protected、private三种显示的修饰符用于控制可见性,package不是显示的修饰符,它是隐含的,即如果在类、变量等前没加显示的可见性修饰符,那它就是pa...
  • findaway123
  • findaway123
  • 2012年05月26日 14:36
  • 5324

Java学习之访问权限Public,Private,Protected,Default的作用域

1.Default:默认的权限,当方法或域名没有使用权限限制符时,其磨人具有default权限,即是包权限,只有在该包下可见2.public权限:在方法或域面前显示的给定public限定时候,其具有该...
  • u014410695
  • u014410695
  • 2016年06月17日 10:02
  • 732

public、private和protected的区别

public:声明方法和属性可以被随意访问。 Protected:声明的方法和属性只能被类本身和其继承子类访问。 private:只能被定义属性和方法的类访问。 private 是完全私有的...
  • phenixyf
  • phenixyf
  • 2014年12月09日 14:39
  • 2365
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java (public ,protected,private)简单程序分析
举报原因:
原因补充:

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