您的位置:首页 > 编程语言 > Java开发

java基础知识点积累

2012-09-16 09:55 316 查看
1.抽象类与接口的比较 1、两者都可以有抽象方法 2、接口中只可以有常量,不能有变量;而抽象类中既可以有常量也可以有变量。 3、抽象类中也可以有非抽象方法,接口不可以。

2.


同问
java 下面protected类型变量怎么不能访问呢?

检举|2008-9-23
09:49
提问者:
水月花月 | 浏览次数:1382次

下面的java程序怎么错了
package mypack1; 

public class ClassA { 
protected int var2; 
} 

package mypack2; 

public class ClassB extends ClassA { 
void a(){ 
ClassA a = new ClassA(); 
a.var2 = 3; 
} 
} 

为什么a.var2 = 3这里错误,protected不是子类和同包公开吗?子类和同包二者是and还是or关系?(AB两个类不同包,但是有继承关系)


我来帮他解答

图片

符号

编号

排版

地图

您还可以输入9999 个字
您提交的参考资料超过50字,请删除

参考资料:匿名
提交回答



检举|2008-9-23
10:05
满意回答

1.理论:
The protected modifier specifies that the member can only be accessed within its own package (as with package-private) and, in addition, by a subclass of its class in another package. 
(http://72.5.124.55/docs/books/tutorial/java/javaOO/accesscontrol.html)
Protected使该成员只能被和自己同一个class的语句访问(这点和private一样)。另外,protected能使该class的subclass访问。

2.错因:
“protected不是子类和同包公开吗?”
==============================
是,完全是

“子类和同包二者是and还是or关系?”
==============================
是or。也就是同包和子类都可以被公开。

“为什么a.var2 = 3这里错误”
==============================
ClassB才是ClassA的子类,那么要访问var2,直接用var2就可以了(如:在ClassB中,可以使用:var2 = 999;)。
这行ClassA a = new ClassA();这里a是所创建ClassA的一个Instance(类例),并不是ClassA的子类,所以a.var2不能直接访问(除非用public,public的成员可以在任何情况被访问)。


3 泛型这个东西,说白了就是型参,也就是说类型本身可以作为参数来对类的类型做辅助说明。

4.


同问
java中的泛型具体能应用在哪些方面上?

检举|2012-4-18 10:02
提问者:
java紧挨va | 浏览次数:59次

用法是知道的,好像不知道具体什么时候用,请高手指点一下,3q


我来帮他解答

图片

符号

编号

排版

地图

您还可以输入9999 个字
您提交的参考资料超过50字,请删除

参考资料:匿名
提交回答

检举|2012-4-20 17:55
满意回答

泛型:规定了此集合中元素的类型。
例如:

ArrayList<Integer> arr = new ArrayList<Integer> ();

这样就创建了一个包含整数的 ArrayList 对象。
如果要自己定义泛型类,就用如下形式:

class MyCollection<E> {...}

尖括号中的类型可以有限制,例如你需要让 MyCollection 中的类型都具有可比性,可以用如下格式:

class MyCollection<E extends Comparable> {...}

此外,要注意泛型的一些特性:

1. 不能直接创建泛型数组。如 new ArrayList<Integer>[5] 之类的是错的。只能用如下方法:new ArrayList[5] 或者 (ArrayList<Integer>[])new ArrayList[5];

2. 静态方法中需要小心,因为 E 一般是非静态类型,如果你这样写:
   class MyCollection<E> {
       public static MyCollection<E> abc() {
           ......
       }
   }
   是错的。你只能把 <E> 去掉。




4..

J***A反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能:在运行时判定任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判定任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。




5.Java问题:为什么类方法中不能访问普通成员变量而只能访问类变量??

检举
| 2012-2-14 21:25

提问者:匿名 |
浏览次数:207次

普通成员方法可以访问静态变量,而相反的为什么静态方法却不能访问普通成员变量???为什么??


我来帮他解答

图片

符号

编号

排版

地图

您还可以输入9999 个字
您提交的参考资料超过50字,请删除

参考资料:匿名
提交回答





检举
| 2012-2-15 13:40

满意回答

你说的java中的普通成员是在new一个对象的时候才产生的,而static成员是编译这个类的时候就产生了。有一个先后顺序。方法同理。
所以你写静态方法的时候 没有创建对象实例,所以还没有非静态的成员,所以不能调用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: