JAVA的类的方法,任何一个对象都可以对其进行修改?
Thread thread = new Thread()
{
public void run()
{
while(true)
{
try
{
Thread.sleep(500);
}
catch(Exception e){}
System.out.println("1:"+this.getName());
System.out.println("2:"+Thread.currentThread().getName());
}
}
};
这个问题在很久之前就有想到过,当初是看到定义一个接口,需要在生成接口对象(或许说生成接口对象有错误,就是 new 接口)时,对接口中的方法进行方法体的定义。
当初就感觉很奇怪,因为之前看过一点点C++,印象中一个类的方法是固定的,一般不会在定义对象的时候,再对类中的方法进行修改。
但接口属于JAVA特有,想这也是一种新的特性。
但刚刚发现这个问题,这让我很疑惑。代码上就是如上。
当我以一个类定义一个对象的时候,我依然可以对非抽象类中的非抽象方法进行重写。
那这种类和接口有何区别,难道就是一个比较高级的接口,
这个类中所拥有的不变的东西只是那些属性和方法的名称,至于方法完成的功能,程序员完全可以在自己定义一个该类的对象的时候进行修改。
(这根本就是像一个接口,而不像一个类)
前些天在论坛看到一个提及JAVA多态的问题,我说JAVA无需通过虚函数,就可以完成父类访问子类方法的操作。结果有一个朋友说,JAVA中除了final和static,所有的方法都是虚函数。
不知这个是否与上面这个生成对象时重写方法有关。
还有,JAVA中有什么时候,生成的对象,无法修改其对应类中本身已经定义好的方法呢?
------解决方案--------------------继承,匿名内部类
------解决方案--------------------还有,JAVA中有什么时候,生成的对象,无法修改其对应类中本身已经定义好的方法呢?
这个可以用final关键字,和加private访问权限控制的,在方法前加final or private
------解决方案--------------------LZ,你想多了,这就是匿名类而已,最后编译,也就是一个class。
------解决方案--------------------接口,抽象类,多态,java特性啊。。。。
当一个东西没办法被其他class调用或者不想被其他class调用的时候,就可以用匿名内部类啦。