首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

好多有关问题,一块说了,吧

2011-12-13 
好多问题,一块说了,吧.1在数组那,基本类型的数组定义,必须定义其大小,也就是下标,这样理解对吗?2,如果是引

好多问题,一块说了,吧.
1在数组那,基本类型的数组定义,必须定义其大小,也就是下标,这样理解对吗?

2,如果是引用类型的数组,则必须将其实例经,也就是和类一样,实例化一个对象出来,才能寻她进行附值.?????对吗?


3,方法的覆盖,如果不满足覆盖条件的话,那这个方法会不会成为子类的自己的方法,也就是私有的方法呢?(比如说方法名相同,但参数或者返回值不同的话.)
例子,

class A{
public void method(){
  System.out.println("Superclass method()");
}
}
class B extends a{

  public void Method(){
}
  public static void main(String args[]){
  new B().method();
}
}
B类里的method为什么是大写开头的,而且是红色的?

方法的重载是一个类里的,方法的覆盖是在类的继承里的,情况不同所以叫法不同,这样理解对吗
还有,继承的多态是什么意思?看了好久看不懂?????
数剧类型那的装箱是怎么同事?????


谢谢各位啦!!!!!!!!!


[解决办法]
1、基本类型数组,像 int[] a; 这样的形式也是正确的,即是说也不用必须明确声明大小。

2、引用类型的数组?你是说像 List list = new ArrayList()这样么?这样需要实例化,因为前面那个List list只是声明了一个句柄而已,并没有实际在内存中分配空间生成一个数组对象。

3、Java对大小写敏感,所以A类中的method()和B类中的 Method()是两个完全不同的方法。

覆盖……hmm……我想大多数认更习惯称之为“重写”。

楼主的理解有点问题。
所谓重载,是方法名相同而参数列表不同。

比如一个类的构造函数

class A()
{
private int i;
private int j;

A(){} //默认构造函数

A(int i,int j){
this.i = i;
this.j = j;
} //对构造函数进行重载

public void printStr(String s) //解释 方法重写,备用
{
System.out.println(s);
}
}
这里有两个构造函数,A()和A(int,int)。这就叫重载。我们实例化对象的时候可以选择适当的构造函数。比如new A()或new A(1,2);普通的成员方法与此类似。

现在说重写。

比如有个类B

class B extends A()
{
public void printStr(str)
{
System.out.println("this is override method"+s); //对A类继承下来的printStr方法进行重写
}
}

基本就是这样吧
[解决办法]
1在数组那,基本类型的数组定义,必须定义其大小,也就是下标,这样理解对吗? 
只是定义的话不用
初识化的话必须

2,如果是引用类型的数组,则必须将其实例经,也就是和类一样,实例化一个对象出来,才能寻她进行附值.?????对吗? 
没看太明白,
引用类型数组,是这样么?
比如List[] list=new List[n];这样?这样是new出来n个List给这个List的数组.
同样,你也可以
LinkedList[] ll=new LinkedList[n];
List[] list=ll;
这样就没有new出来任何新的List的实例.

3,方法的覆盖,如果不满足覆盖条件的话,那这个方法会不会成为子类的自己的方法,也就是私有的方法呢?(比如说方法名相同,但参数或者返回值不同的话.) 
如果不满足覆盖条件的话,这个方法会成为子类自己的方法,
私有方法是在方法前加private,与覆盖不覆盖没关系...
[解决办法]
其他问题:
B类里的method为什么是大写开头的,而且是红色的? 

JAVA虽然大小写区分,
但JAVA里没有规定方法名首字母不能大写
只是人们为了不混淆各种变量方法名而遵循的一种规范不推荐方法名首字母大写
红色是因为你发帖的时候用了ubb代码
[color=#FF0000][/color]里加的文字会变成红色



方法的重载是一个类里的,方法的覆盖是在类的继承里的,情况不同所以叫法不同,这样理解对吗 
参见1楼,
一个类里有多个同名的方法,并用参数类型或个数的不同加以区分,这种情况叫重载
一个类继承另一个类,并且子类有一个方法与父类一模一样(方法名,参数列表,返回值)这种情况叫覆盖(重写)

还有,继承的多态是什么意思?看了好久看不懂????? 
没什么必要看,只要你把继承,接口,抽象类,重写,重载,等等这些概念搞清楚了基本就懂什么是多态了..
非要解释的话..请看:

对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或服务在一般类及其各个特殊类中具有不同的语义。例如:"几何图形"的"绘图"方法,"椭圆"和"多边形"都是"几何图"的子类,其"绘图"方法功能不同。
在java语言中,多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。

  1) 编译时多态
  在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。

  2) 运行时多态
  由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父类对象使用。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。

  重写方法的调用原则:java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。



数剧类型那的装箱是怎么同事????? 
就是说,基本数据类型,有int,char,double,long,float,boolean这6个,他们并不是真正意义上的"类"
为了满足某些需要
基础类型的封装就是说把他们变成真正意义上的类,如Integer,Chararcter,Double,Long,Float,Boolean
这些是类,可以像Integer i=new Integer(6);这样使用,不能直接进行运算..

------解决方案--------------------


1 声明不用,定义最少需要确定第一维大小

2 没看明白

3 方法的重写和重载不一样,同名(返回类型不构成区别重写或重载方法的因素)方法,参数列表不一致(个数,类型)是两 个不同的方法(重载);方法同名,参数列表也相同,在同一个类中是不允许的,继承关系的多个类中发生这种情况就是重写,不会发生可见度的变化,JVM由后绑定区分对它们的调用

4 多态值得对同一种抽象基类,可以定义一个(或多个)行为(方法,或者说接口),这决定了基类的子孙类也应具有这种行为(可以用相同的方法),但是子孙类的这个行为可以有不同的具体实现,thinkingInjava中举的例子,乐器可以用来演奏(行为一致),但是不同乐器的演奏方式各不相同(实现多样化)就是这个意思

5 没看明白
[解决办法]
1,2有正解

3.为什么是红的?
你的方法名Method正好与系统保留的关键字冲突,解决:改个名字就好,如:method1
提示:方法名第一个单词的第一个字母最好用小写,其后的单词第一个字母大写

楼主那样说法子类重写父类的方法,只要有一点不同就属于自己的方法.
提示:重载与重写与返回类型无关.

热点排行