- 浏览: 184238 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
学思危:
我大学的时候出来的时候也是在想这个问题,不过后来的一段时间了解 ...
应届生学C好还是学JAVA好,做什么更挣钱 -
caipeiming:
这里有个例子Java给图片加上水印并设置透明度和位置
java添加透明图片和文字水印 -
caizhongda:
<div class="quote_title ...
应届生学C好还是学JAVA好,做什么更挣钱 -
雾豫园:
首先谢谢您这么耐心的给我解答了 然后你说到的加班倒是 ...
应届生学C好还是学JAVA好,做什么更挣钱 -
caizhongda:
<div class="quote_title ...
应届生学C好还是学JAVA好,做什么更挣钱
Java中:
Java中的访问权限有public,private,protected和默认的包访问权限,如果类中的属性方法没有显示的指明访问权限,则具有包访问权限,我喜欢称它为packeged权限,很多人也称它为friendly访问权限,而packaged和friendly这两个关键字在实际中都是不存在的。
详细解释,我引别人的一篇博客,说明:
java访问权限修饰符public protected friendly private用法总结
首先声明:java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly。
为了条理清晰,分三种不同情况来总结。
一 访问权限修饰符修饰成员变量和方法
public:表明该成员变量和方法是共有的,能在任何情况下被访问。
protected:必须在同一包中才能被访问。(说的比较简单,看个例子就明白了)
eg:class A
{
protected int weight ;
protected int f( int a,int b )
{
// 方法体
}
}
假设B与A在同一个包中,则
class B
{
void g()
{
A a=new A();
A.weight=100;//合法
A.f(3,4); //合法
}
}
特别说明:什么是在同一个包中?
答:用package打包在一起的class ,叫在同一个包中。(不明白,举个例子)
eg:在JDK的src\java\io中,你会看到许多java类,第一句源代码都是package java.io;
没有使用package打包的,在同一目录下的类也会被视做同一个包。
friendly:在这种情况下中,同protected。区别在第二和第三种情况中。
eg: class A
{
int weight ;
int f( int a,int b )
{
// 方法体
}
}
假设B与A在同一个包中,则
class B
{
void g()
{
A a=new A();
A.weight=100;//合法
A.f(3,4); //合法
}
}
private: 只能在本类中访问。
eg: class Test
{
private int money;
Test()
{
money=2000;
}
private int getMoney()
{
return money;
}
public static void main(String args[])
{
Test te=new Test();
te.money=3000; //合法
int m=te.getMoney(); //合法
System.out.println("money="+m);
}
}
PS: 实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。
二 访问权限修饰符修饰类
1,不能用protected和private修饰类。
2,用friendly修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中。
三 访问权限修饰符与继承
这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:
1,子类与父类在同一包中
此时只有声明为private的变量与方法不能被继承(访问)。
eg:
class Father
{
private int money ;
int weight=100;
}
class Son extends Father
{
viod f()
{
money=10000;// 非法
weight=100; // 合法
}
}
2,子类与父类不在同一包中
此时private与friendly均不能被继承(访问), protected与public可以。
eg:
Father.java
package com.aaa
public class Father
{
int height ;
protected int money=120;
public int weight;
protected int getMoney()
{
return money;
}
void setMoney(int newMoney)
{
money=newMoney;
}
}
Son.java
package com.bbb
import com.aaa.Father;
public class Son extends Father
{
void f()
{
money=10000;//合法
//height=170;//非法,height为friendly修饰的变量
System.out.println(money);//输出结果是10000
//setMoney(300); //非法
int number=getMoney(); //合法
System.out.println(number);//输出结果是10000
}
public static void main(String args[])
{
Son sss=new Son();
sss.f();
}
}
所以,访问权限修饰符权限从高到低排列是public ,protected ,friendly, private。
C++中
由于不存在包的概念,因此,protected与java中的protected有所不同,Java中的protected不但,子对象可以访问,而且包里的其它地方,也可以显示的通过子对象调用,如
package pack1
public class A{
protected int a;
}
package pack1
public class B{
public static void main(String[] args){
System.out.println(a);
}
}
上述代码是没有问题的,但如果B与A不在同一个包中,则不能访问。因此,在Java中,protected在可见性在与packaged权限类似,而只是在继承性上,没有对包划界,packaged权限不允许子象访问其它包内父对象的包访问权限的属性。
在C++里,protected属性有严格的定义,即只具有垂直的访问权限,只有其自身与其后代可以访问,限一个类的protected属性,只有其内部与子对象内部可以访问,而在其它地方是不可见的,为了说明这个问题,见以下代码:
class A{
protected:
int a;
protected:
void print(){
cout<<"A protected method"<<endl;
}
};
class B:public A{
protected:
void test(){
cout<<"test A"<<endl;
}
};
int main(){
B b;
b.test();
//b.print();
}
上述代码是无法编译的,因为b.test()在main里是不可见的,main无法访问b的protected方法,即使方法是通过子对象来调用的,如果把B中的protected方法改为public,则代码可以,编译成功,编译成功后,在B中可以房问父类的protected属性.
下表列出了C++三种继承对属性的访问情况:
public属性 protected属性 private属性
public继承 public protected 不可见
protected继承 protected protected 不可见
private继承 private private 不可见
Java中的访问权限有public,private,protected和默认的包访问权限,如果类中的属性方法没有显示的指明访问权限,则具有包访问权限,我喜欢称它为packeged权限,很多人也称它为friendly访问权限,而packaged和friendly这两个关键字在实际中都是不存在的。
详细解释,我引别人的一篇博客,说明:
java访问权限修饰符public protected friendly private用法总结
首先声明:java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly。
为了条理清晰,分三种不同情况来总结。
一 访问权限修饰符修饰成员变量和方法
public:表明该成员变量和方法是共有的,能在任何情况下被访问。
protected:必须在同一包中才能被访问。(说的比较简单,看个例子就明白了)
eg:class A
{
protected int weight ;
protected int f( int a,int b )
{
// 方法体
}
}
假设B与A在同一个包中,则
class B
{
void g()
{
A a=new A();
A.weight=100;//合法
A.f(3,4); //合法
}
}
特别说明:什么是在同一个包中?
答:用package打包在一起的class ,叫在同一个包中。(不明白,举个例子)
eg:在JDK的src\java\io中,你会看到许多java类,第一句源代码都是package java.io;
没有使用package打包的,在同一目录下的类也会被视做同一个包。
friendly:在这种情况下中,同protected。区别在第二和第三种情况中。
eg: class A
{
int weight ;
int f( int a,int b )
{
// 方法体
}
}
假设B与A在同一个包中,则
class B
{
void g()
{
A a=new A();
A.weight=100;//合法
A.f(3,4); //合法
}
}
private: 只能在本类中访问。
eg: class Test
{
private int money;
Test()
{
money=2000;
}
private int getMoney()
{
return money;
}
public static void main(String args[])
{
Test te=new Test();
te.money=3000; //合法
int m=te.getMoney(); //合法
System.out.println("money="+m);
}
}
PS: 实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。
二 访问权限修饰符修饰类
1,不能用protected和private修饰类。
2,用friendly修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中。
三 访问权限修饰符与继承
这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况:
1,子类与父类在同一包中
此时只有声明为private的变量与方法不能被继承(访问)。
eg:
class Father
{
private int money ;
int weight=100;
}
class Son extends Father
{
viod f()
{
money=10000;// 非法
weight=100; // 合法
}
}
2,子类与父类不在同一包中
此时private与friendly均不能被继承(访问), protected与public可以。
eg:
Father.java
package com.aaa
public class Father
{
int height ;
protected int money=120;
public int weight;
protected int getMoney()
{
return money;
}
void setMoney(int newMoney)
{
money=newMoney;
}
}
Son.java
package com.bbb
import com.aaa.Father;
public class Son extends Father
{
void f()
{
money=10000;//合法
//height=170;//非法,height为friendly修饰的变量
System.out.println(money);//输出结果是10000
//setMoney(300); //非法
int number=getMoney(); //合法
System.out.println(number);//输出结果是10000
}
public static void main(String args[])
{
Son sss=new Son();
sss.f();
}
}
所以,访问权限修饰符权限从高到低排列是public ,protected ,friendly, private。
C++中
由于不存在包的概念,因此,protected与java中的protected有所不同,Java中的protected不但,子对象可以访问,而且包里的其它地方,也可以显示的通过子对象调用,如
package pack1
public class A{
protected int a;
}
package pack1
public class B{
public static void main(String[] args){
System.out.println(a);
}
}
上述代码是没有问题的,但如果B与A不在同一个包中,则不能访问。因此,在Java中,protected在可见性在与packaged权限类似,而只是在继承性上,没有对包划界,packaged权限不允许子象访问其它包内父对象的包访问权限的属性。
在C++里,protected属性有严格的定义,即只具有垂直的访问权限,只有其自身与其后代可以访问,限一个类的protected属性,只有其内部与子对象内部可以访问,而在其它地方是不可见的,为了说明这个问题,见以下代码:
class A{
protected:
int a;
protected:
void print(){
cout<<"A protected method"<<endl;
}
};
class B:public A{
protected:
void test(){
cout<<"test A"<<endl;
}
};
int main(){
B b;
b.test();
//b.print();
}
上述代码是无法编译的,因为b.test()在main里是不可见的,main无法访问b的protected方法,即使方法是通过子对象来调用的,如果把B中的protected方法改为public,则代码可以,编译成功,编译成功后,在B中可以房问父类的protected属性.
下表列出了C++三种继承对属性的访问情况:
public属性 protected属性 private属性
public继承 public protected 不可见
protected继承 protected protected 不可见
private继承 private private 不可见
发表评论
-
MAPREDUCE面试题
2012-02-15 14:17 2071Map/Reduce功能很强大,只要设定合理Key、Value ... -
Hadoop 、HBase 网页收藏
2011-09-27 17:02 829Hadoop 数据类型与文件结构剖析 Sequence, Ma ... -
JAVA的IO系统 笔记
2011-04-20 23:03 922对于JAVA的IO系统,从开始学习JAVA开始到现在,一直都晕 ... -
开源GIS软件MapServer介绍 三维Gis
2009-11-01 22:55 4747Mapserver是比较有名气的 ... -
Jacob 入门基础
2009-10-29 20:31 1073首先,大家先要了解一下jacob ,官方的解释是Java CO ... -
谈谈你对MVC和三层架构的理解?(月薪三万的面试题)
2009-10-23 15:38 1434引用V 是皮肉,是看到的东西 M 是骨骼,是里面真实的东西 ... -
Jbpm 错误 异常 总结
2009-10-19 19:53 11921、问题:org.hibernate.exception.Co ... -
Tomcat 学习笔记
2009-10-19 14:31 9731.项目的配置: {%Tomcat%}\Tomcat6\con ... -
JBPM入门攻略 安装
2009-10-18 15:38 1177一、jbpm是依赖于jboss的所以要先安装JBoss 这里有 ... -
Eclipse Ganymede 介绍
2009-10-18 09:53 1358Eclipse基金会 发布了Eclipse Ganymede, ... -
开源GIS系统
2009-10-17 19:54 1420平台的对峙 开发者 ... -
JasperReport & iReport 报表开发笔记
2009-10-17 12:57 1690iReport中文手册,非常详细:【中文的不好找的】 http ... -
关于 Hibernate 级联 删除 的问题
2009-10-15 22:27 1191Hibernate级联删除,删除某一条数据,则其子表的所有级联 ... -
java添加透明图片和文字水印
2009-10-14 19:02 6831import java.awt.AlphaComposi ... -
Jsp 和 Servlet 面试题
2009-10-14 15:25 10111、jsp有哪些内置对象作 ... -
Java 日期格式化及其使用例子收集
2009-10-06 11:00 7791 SimpleDateFormat担当重任, ... -
一篇有关Java的内存泄露的文章(受益哦)
2009-09-17 12:16 8941 引言 Java的一个 ... -
slf4j 与 log4j比较
2009-09-15 22:09 1758log4j不用说,比起jdk和common-logge ... -
List遍历
2009-07-15 20:12 3517对List的遍历有三种方式 List< ... -
javaScript向服务器请求
2009-06-18 19:16 733javaScript向服务器请求 第一种: var ...
相关推荐
java访问权限修饰符public.doc
计算机二级摸底测验J继承和接口和java访问权限修饰符总结ava题目
java访问权限修饰符[参考].pdf
继承和接口和java访问权限修饰符总结.pdf
继承和接口和java访问权限修饰符总结.doc
经过长时间的学习和经验的积累,我总结出JAVA访问修饰符的全部特性和使用范围,外加使用权限,另外我还总结了一下关于接口,抽象类的一些特性
父子类可以是不同包 在不同包下面只有public 与 protected 可以访问,而且protected必须是在继承关系下才能够访问
本文档介绍了Java中的访问控制权限修饰符。它解释了public、private、protected和默认访问级别的含义和用法,以及它们在类、接口、成员变量和方法中的应用。 能学到什么 通过阅读本文档,您将学习以下内容: 不同...
主要介绍了举例详解Java中的访问权限修饰符,是Java入门学习中的基础知识,需要的朋友可以参考下
Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符,下面通过本文给大家简单介绍下java修饰符访问权限相关知识,感兴趣的朋友一起学习吧
1、包: 1、全部小写 2、第一级 指该项目的类型,如com,org,gov等, 2、 访问权限修饰符 3、封装性: 1、静态属性: 1、static属性可以使
对于Java中访问权限修饰符的有关问题做下的思维导图,便于深化记忆,希望对你有帮助!注意:文件为.mm后缀建议下载freemind打开,免费的思维导图软件!
Java 支持 4 种不同的访问权限: private 私有的 protected 受保护的 public 公共的 default 默认 1、访问权限 总结成如下表格: 修饰符 当前类 同一包内 子孙类 其他包 public yes yes yes yes protected yes yes ...
主要介绍了Java import导入及访问控制权限修饰符过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1. 包 2. 权限修饰符 3. 不同权限的访问能力
1、多态基础语法 2、多态在实际开发中的作用 3、final关键字 4、关于package和import 5、关于访问控制权限
访问控制符:访问控制符的作用是说明被声明的内容(类、属性、方法和构造方法)的访问权限 我们的访问控制符有四种: public protected 不修饰 private 这里有一张经典的表可以说明他们的作用范围: 访问控制符 同一类...
1. Java中的8种基本数据...它们分别表示对其他类或者其他包的访问权限。其中,public表示所有类都可以访问,protected表示同一包中和子类中可以访问,private表示只有本类中可以访问,而默认的则表示同一包中可以访问。
主要介绍了浅析Java中的访问控制权限,在Java中,提供了四种访问权限控制,分别是默认访问权限、public、private以及protected,感兴趣的小伙伴们可以参考一下