Q5.4 public,protected,private有什么不同?
答:这些关键字用于声明类和成员的可见性。
public成员可以被任何类访问,
protected成员限于自己和子类访问,
private成员限于自己访问。
Java还提供了第四种的默认可见性,当没有任何public,protected,private修饰时,成员
是同一包内可见。
类可以用public或默认来修饰。问题:
1》如果没有任何修饰时,成员是同一包内可见,这个同一包是哪个包呢?如果我的类没有声明在一个包内,默认包是什么?2》类可以用public和默认来修饰,如果用public不就是被任何类访问?其它包的也可以吧?(是要还要import这个包吧?)如果是默认的话也应该是这样咯?默认就是=public吧?3》除了类其它的不也可以默认也是public吗?(就是不加这个修饰)像属性或方法啊。4》为什么java中每个成员都指定一个访问权限呢?为什么不是像C++中那样用public,private,protect来说明下面的都是这个权限内的。而不是征对每个成员指定。
答:这些关键字用于声明类和成员的可见性。
public成员可以被任何类访问,
protected成员限于自己和子类访问,
private成员限于自己访问。
Java还提供了第四种的默认可见性,当没有任何public,protected,private修饰时,成员
是同一包内可见。
类可以用public或默认来修饰。问题:
1》如果没有任何修饰时,成员是同一包内可见,这个同一包是哪个包呢?如果我的类没有声明在一个包内,默认包是什么?2》类可以用public和默认来修饰,如果用public不就是被任何类访问?其它包的也可以吧?(是要还要import这个包吧?)如果是默认的话也应该是这样咯?默认就是=public吧?3》除了类其它的不也可以默认也是public吗?(就是不加这个修饰)像属性或方法啊。4》为什么java中每个成员都指定一个访问权限呢?为什么不是像C++中那样用public,private,protect来说明下面的都是这个权限内的。而不是征对每个成员指定。
解决方案 »
- socket的问题 为什么通过socket发送的数据有的时候客户端接收不到,有的时候接收得到
- Java 生产者 消费者
- 【急】 netbeans 6.1 中单击按钮关闭窗口问题
- 悄悄问下,怎样在Oracle数据库中对已有的表进行分区
- 请问一个简单问题。
- ~~~~100000(十万分)求救~如何判断有几个用户在使用这个文件
- 請問jdk和sdk有什麽區別?
- 我在Thinking in Java中遇到的Jni问题!
- 安装好J Builder 5.0后不能输入serial no,why?
- 在编写C/S程序时,为什么不能传输汉字?应如何解决?!!!!
- 请教关于java中Timer的使用(分已经散完了,希望大家能帮忙)
- 绘图问题
2.是
3.类内的成员默认应该是private
4.语言特点
比如在C++中这样用:
class B: public A{}
class B: protected A{}
java中用extends,有没有public extends, protected extends之类的用法?
一个类作为私有或保护的用在哪些地方?对于上面的第一个问题还是不太清楚,如果没有任何修饰时,成员是同一包内可见到底是什么意思?没有任何修饰不是默认是private的吗?那同一包内怎么可见呢?应该是本类内才可访问的啊。
public级别可以为所有其它类访问,而非public类只能被当前包内的类访问。这与是否import是两码事,只要一个public类在另一个包中,就必须用import;而另一个包中的非public的类,即使你用import也不能访问。3. 任何不加访问修符符的地方,其访问级别都是Default(不是public,也不是private!切记!)4. 语言特点。
个人认为:Java不像C++那样可以将声明和定义分开来,就是说,Java中没有像C++那样的函数声明。这使得每个函数(即方法)都必须在类中做完整定义(抽象方法除外),这种格式不适合用类似C++的类定义风格。
4. 语言特点。
个人认为:Java不像C++那样可以将声明和定义分开来,就是说,Java中没有像C++那样的函数声明。这使得每个函数(即方法)都必须在类中做完整定义(抽象方法除外),这种格式不适合用类似C++的类定义风格。
=========================
既然没有声明和定义分开,但也可以直接定义啊。如:
public class T
{
public:
void f()
{ }
void g()
{ }
private:
//直接定义。
}
我的意思是为什么不这样,而每个成员前都写一个,感觉有点繁琐啊。
public class T
{
public:
void f()
{ }
void g()
{ }
private:
//直接定义。
}
我的意思是为什么不这样,而每个成员前都写一个,感觉有点繁琐啊。主要是从隐藏具体实现和代码安全方面考虑的,并不繁琐.