MyException - 我的异常网
当前位置:我的异常网» J2SE » 父类和子类的有关问题

父类和子类的有关问题

www.MyException.Cn  网友分享于:2013-01-27  浏览:6次
父类和子类的问题
先看这样两段代码:
class Bomb
{
  static boolean isFirst = true;
  public Bomb(Shot shot)
{
 
}
}
class ShotBomb extends Bomb
{
  isFirst = false;//为什么会报错?  
public NormalBomb(Shot shot)
{
this.x = shot.x - 30;
this.y = shot.y - 30;
this.s = shot;
isFirst = true;//为什么编译通过?
}
}代码中的红色注释部分就是我要问的问题,谢谢!

------解决方案--------------------
看看这个 我以前也迷惑时找的


Java中super 的两种用法 
通过用static来定义方法或成员,为我们编程提供了某种便利,
从某种程度上可以说它类似于C语言中的全局函数和全局变量。
但是,并不是说有了这种便利,你便可以随处使用,如果那样的话,
你便需要认真考虑一下自己是否在用面向对象的思想编程,自己的程序是否是面向对象的。
好了,现在开始讨论this&super这两个关键字的意义和用法。
在Java中,this通常指当前对象,super则指父类的。
当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,
你便可以利用this来实现这个目的,
当然,this的另一个用途是调用当前对象的另一个构造函数,这些马上就要讨论。
如果你想引用父类的某种东西,则非super莫属。
由于this与super有如此相似的一些特性和与生俱来的某种关系,所以我们在这一块儿来讨论,
希望能帮助你区分和掌握它们两个。
在一般方法中
最普遍的情况就是,在你的方法中的某个形参名与当前对象的某个成员有相同的名字,
这时为了不至于混淆,你便需要明确使用this关键字来指明你要使用某个成员,
使用方法是“this.成员名”,而不带this的那个便是形参。另外,还可以用“this.方法名”
来引用当前对象的某个方法,但这时this就不是必须的了,你可以直接用方法名来访问那个方法
,编译器会知道你要调用的是那一个。下面的代码演示了上面的用法:

public class DemoThis{ 
private String name; 
private int age; 
DemoThis(String name,int age){
setName(name); 
//你可以加上this来调用方法,像这样:this.setName(name);但这并不是必须的
setAge(age);
this.print(); br> }
public void setName(String name){
this.name=name;//此处必须指明你要引用成员变量 

public void etAge(int age){
this.age=age; 

public void print(){
System.out.println("Name="+name+" ge="+age);
//在此行中并不需要用this,因为没有会导致混淆的东西 

public static void main(String[] args){
DemoThis dt=new DemoThis("Kevin","22");
这段代码很简单,不用解释你也应该能看明白。在构造函数中你看到用this.print(),
你完全可以用print()来代替它,两者效果一样。下面我们修改这个程序,来演示super的用法。
class Person{ 
public int c; 
private String name; 
private int age; 
protected void setName(String name){
this.name=name; 

protected void setAge(int age){
this.age=age;
 } 
protected void print(){
System.out.println("Name="+name+" Age="+age); 
}
}
public class DemoSuper extends Person{ 
public void print(){
System.out.println("DemoSuper:");
super.print(); 

public static void main(String[] args){
DemoSuper ds=new DemoSuper();
ds.setName("kevin");
ds.setAge(22);
ds.print(); 
}
}
在DemoSuper中,重新定义的print方法覆写了父类的print方法,
它首先做一些自己的事情,然后调用父类的那个被覆写了的方法。输出结果说明了这一点:
DemoSuper:
Name=kevin Age=22

这样的使用方法是比较常用的。另外如果父类的成员可以被子类访问,
那你可以像使用this一样使用它,用“super.父类中的成员名”的方式,
但常常你并不是这样来访问父类中的成员名的。
在构造函数中构造函数是一种特殊的方法,在对象初始化的时候自动调用。
在构造函数中,this和super也有上面说的种种使用方式,并且它还有特殊的地方,请看下面的例子:

  
class Person{ 

public static void prt(String s){
System.out.println(s); 

Person(){
prt("A Person."); 

Person(String name){ 
 prt("A person name is:"+name); 

}
}
public class Chinese extends Person{
 Chinese(){
super(); //调用父类构造函数(1)
prt("A chinese.");//(4) 

Chinese(String name){
super(name);//调用父类具有相同形参的构造函数(2)
prt("his name is:"+name); 

Chinese(String name,int age){
this(name);//调用当前具有相同形参的构造函数(3)
prt("his age is:"+age); 

public static void main(String[] args){
Chinese cn=new Chinese();
cn=new Chinese("kevin");
cn=new Chinese("kevin",22); 

文章评论

十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
一个程序员的时间管理
一个程序员的时间管理
旅行,写作,编程
旅行,写作,编程
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
 程序员的样子
程序员的样子
如何成为一名黑客
如何成为一名黑客
10个调试和排错的小建议
10个调试和排错的小建议
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
总结2014中国互联网十大段子
总结2014中国互联网十大段子
老程序员的下场
老程序员的下场
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
编程语言是女人
编程语言是女人
为什么程序员都是夜猫子
为什么程序员都是夜猫子
代码女神横空出世
代码女神横空出世
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
鲜为人知的编程真相
鲜为人知的编程真相
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员必看的十大电影
程序员必看的十大电影
程序员应该关注的一些事儿
程序员应该关注的一些事儿
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员的鄙视链
程序员的鄙视链
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
那些争议最大的编程观点
那些争议最大的编程观点
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
每天工作4小时的程序员
每天工作4小时的程序员
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
中美印日四国程序员比较
中美印日四国程序员比较
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
我的丈夫是个程序员
我的丈夫是个程序员
程序员和编码员之间的区别
程序员和编码员之间的区别
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
Java程序员必看电影
Java程序员必看电影
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有