问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java 代码问题之final

发布网友 发布时间:2022-05-29 03:22

我来回答

6个回答

热心网友 时间:2024-03-07 23:52

无法输出任何结果,因为System.out.println()是要输出结果,但是无论调用的是哪个类的yyy()方法,都声明为void,没有返回值啊。
(1)public class BB extends AA {
final AA fa = new AA();
void yyy() {
System.out.println("在fa.yyy()");
fa.xxx = 123;
}
public static void main(String[] args) {
new BB().fa.yyy();//此处修改
}
}
class AA {
int xxx;
void yyy() {
xxx = 1;
System.out.println("在fa.yyy()");//添加
}
}
(2)
public class BB extends AA {
final AA fa = new AA();
void yyy() {
System.out.println("在fa.yyy()");
fa.xxx = 123;
}
public static void main(String[] args) {
new BB().yyy();
}
}
class AA {
int xxx;
void yyy() {
xxx = 1;
}
}
(3)
public class BB extends AA {
void yyy() {
System.out.println("在fb.yyy()");
super.xxx = 123;
}
public static void main(String[] args) {
AA a = new BB();
a.yyy();
}
}
class AA {
int xxx;
void yyy() {
xxx = 1;
System.out.println("在fa.yyy()");
}
}
其实不建议在代码中随便使用继承。当使用继承的时候,应当考虑是否需要向上转型“upcasting”。一般应当首先考虑使用组合,即持有类的引用。源程序使用了继承,又在bb类中持有aa的引用,貌似继承没有用到。追问请问这三句new BB().yyy();
new BB().fa.yyy();
final AA fa = new AA();
的意思,我有点模糊,谢谢了

追答new BB().yyy();//调用BB类里面的yyy()方法
new BB().fa.yyy();//调用BB类里面的成员变量AA里面的yyy()方法
final AA fa = new AA();//将AA声明为final
我的修改主要是基于上面的程序,不建议这样写,所以还是自己先看书,把基础打好

热心网友 时间:2024-03-07 23:53

final类不能被继承,没有子类,final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

final aa fa=new aa(); // 实例化了一个final型的aa类的对象:fa
final void yyy() //声明方法yyy()为final型方法,不能被bb类的子类覆盖

参考资料:http://ke.baidu.com/view/2116821.htm

热心网友 时间:2024-03-07 23:53

final 修饰的变量为常量 不可以被改变 且必须要初始化
final 修饰的方法不能被重写
final 修饰的类 称为最终类 也不能被继承
另外 你的代码也有些小问题
首先你已经继承了 aa 就没必要new 它了
还有 你父类 本来就有个yyy()方法 那你子类重写的时候 干嘛还加final 修饰呢

热心网友 时间:2024-03-07 23:54

java中声明类、属性和方法,可使用关键字final来修饰。

2.Final标记的类不能被继承。

3.Final标记的方法不能被子类重写

4.Final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。

代码有问题 运行没结果
final aa fa=new aa(); //改为 aa fa=new aa();
System.out.println("在yyy()"); //改为 System.out.println("在" + fa.yyy());
这个程序不适合例证 final 给你举个例子
public class Test1 {

public static void main(String[] args) {
// TODO 自动生成方法存根
}

public void f1() {
System.out.println("f1");
}
//无法被子类覆盖的方法
public final void f2() {
System.out.println("f2");
}

public void f3() {
System.out.println("f3");
}

private void f4() {
System.out.println("f4");
}
}

public class Test2 extends Test1 {

public void f1(){
System.out.println("Test1父类方法f1被覆盖!");
}

public static void main(String[] args) {
Test2 t=new Test2();
t.f1();
t.f2(); //调用从父类继承过来的final方法
t.f3(); //调用从父类继承过来的方法
//t.f4(); //调用失败,无法从父类继承获得

}
}追问上面的代码是书上的一题习题来的,它上面说没有问题,但是我好像看得不懂,可以解释一下莫?具体一点,最后可以利用测试类来看看结果

追答你好
你只需要记住这样的话 就可以了 final 关键字 以后遇到只要你看的懂 并且知道什么意思什么情况用 其他不必深究 俗话说好刀用到刀刃上
java中声明类、属性和方法,可使用关键字final来修饰。

2.Final标记的类不能被继承。

3.Final标记的方法不能被子类重写

4.Final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次。

热心网友 时间:2024-03-07 23:54

/**
* @param args
* @throws NamingException
*/
像这种以"/**"斜杠加两个星号的注释是会被加到doc中的,如果在eclipse中还可以使用alt+shift+j自动生成注释。

热心网友 时间:2024-03-07 23:55

修饰fa的表示fa的值不能再更改(常量)
修饰yyy的表示该函数不能在子类里被重写

你创建一个bb的实例不就可以看见结果了?..写一个Main总会吧..追问那请你把完整的写下来吧,好让我运行一下,我写的就是出现问题
class aa{
int xxx;
void yyy(){
xxx=1;
}
}
public class bb extends aa{

final aa fa=new aa();
void yyy(){
System.out.println("在fa.yyy()");
fa.xxx=123;
}
public static void main (String[] args) {
System.out.println(fa.yyy());
}
}
无法从静态上下文中引用非静态 变量 fa
此处不允许使用 "void" 类型
这样的怎么解决

追答我觉得你还没有了解你的代码的意思是什么..
fa是每个bb的实例里的成员,不创建bb的实例,直接拿fa是没有意义的,好比连一个'人'都没有,就直接拿来'手'说事
把main里的fa改成new bb().fa
还有,把yyy改成public的,否则不允许外面(main里)调用的
还有,yyy都不返回值,你为什么要去打印它..把"System.out.println"去了,只保留里面的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
imba里能抽到什么好装备 DOTA IMBA神器抽奖抽到几率和大野爆的几率。还有小鸡无限眼的BUG能不能... 《魔兽世界》怀旧服玩具获取方法 求最好的手机杀毒软件 手机杀毒软件哪个好用 2023年最旺女孩名字有草有水296个 我的世界红石电梯怎么制作 怎么用微信申请微信号? 有些网页不能复制,可我想要复制下来,该怎么弄啊? 电脑网址怎么保存电脑怎么收藏网址 怎么办,还是最想去土耳其? 海口维也纳千古情酒店和维也纳国际酒店区别 微机原理这门课讲什么的? 有谁知道怎么看出维也纳酒店是连锁的还是加盟店 求全套TPO软件版(不要PPT版哦)谢谢啦~~ 造梦西游3号给我一个 40以上悟空 我给37唐僧36八戒26沙僧号 谁给我个水浒号啊! 《csgo》全球冷却时间破坏性极大吗? csgo定位赛怎么算 定位赛连胜10场什么等级 我的主页hao123.com显示出td width 150px,是什么意思 我的野蛮上司全本 txt ...么?能不能发我一份啊?yyynnn123@126.com,谢 csgo没打完定位赛的能和打完定位赛的双排吗? 后台执行SQL语句 xxx表段里的 yyy字段里的 123内容 替换成456 这语句... 唱给雅音宫羽mp3 shhyyy123@sina.cn 最好质量高的,多谢~ CSGO定位赛每个号只能打一次吗? 求非天夜翔《锦衣卫》正文番外完整版 yyy123wan @126.com CSGO 定位赛 求非天夜翔幺儿完整版yyy123wan @126.com csgo打赢了定位赛为什么没有加胜场 79443504 yyy123 造梦3 ASHTON/阿诗顿破壁料理机好不好,质量咋样 1992年我全家户口迁走,1999年第二轮土地承包时,我在现住地没有分到承... 1999年土地确权以后村委会还能制定村规民约对土地进行微调吗?_百度... 源代码怎么转换成种子 我想要1999年以前的土地承包法 中山市伊斯顿电器有限公司 中山市峻国电器有限公司 公司地址︰ 中国广 ... ...省有没有《广东省<中华人民共和国农村土地承包法>实施办法》?_百度... 荒地的承包期限是多少年?法律是如何规定的? 1999年户口迁城里了土地还在吗 微机原理的《单板机发报机》的课程设计计 汇编语言和微机原理顺序 先有磁带还是先有光盘 九月份去北京哪个景点好? 2013农村土地承包法最新承包期限 跪求微机原理“家用电热淋浴器控制器”课程设计!!! 磁带,光盘可以寄快递吗? 9月可以去北京旅游吗? 合同法关于土地承包优先权在第几条上有规定啊,高手指教下啊 9月份去北京玩 民办教师于1999年转为公办教师,后全家农转非,将承包土地自留地山林自愿...