怎样调用父类属性呢

猫儿爷爷 2010-03-25 01:47:56
class Animal
{
private String name ;
private int legs ;

public Animal()
{
name = "哈哈";
legs = 4 ;
Animal an = new Animal ("嘻嘻" , 2);
}
public void setName( String name )
{
this.name = name ;
}
public String getName()
{
return name;
}
public Animal( String name , int legs )
{
this.name = name ;
this.legs = legs ;
}

public void move ()
{
System.out.println( name + " Moving ! " );
}

public void move ( int n )
{
for ( int i = 1 ; i <= n ; i++ )
{
System.out.println( name + " Moving ! ! !" );
}
}
}

/*
写一个类Fish,继承自Animal类,
并提供一个构造方法,
该构造方法需要一个参数name,并给legs赋默认值0;
该类还要求覆盖Animal类中的无参move()方法
要求输出:XXX Swimming!!
*/
class Fish extends Animal
{
private String name ;
private int legs ;

Fish ( String name )
{
this.name = name ;
this.legs = legs ;
legs = 0 ;
}

public void move ()
{
System.out.println( this.name + " Swimming!!");
}
}
/*
写一个类Bird,继承自Animal类,
并提供一个构造方法,
该构造方法需要一个参数name,并给legs赋默认值2;
该类还要求覆盖Animal类中的无参move()方法,
要求输出:XXX Flying!!
*/

class Bird extends Animal
{
private String name ;
private int legs ;

public Bird( String name )
{
this.name = name ;
this.legs = 2 ;
}

public void move ()
{
System.out.println( name + " Flying!!");
}
}
/*
写一个类Zoo,
要求分别生成若干个Animal,Fish和Bird。
并调用他们的属性和方法。
*/

class Zoo
{
public static void main ( String [] args )
{
Animal an = new Animal("adas" , 2);
an.move(5);
Animal a1 = new Fish ("鱼");
a1.move();
a1.getName("大时代");
Animal a2 = new Bird ("鸟");
a2.move();

}
}
怎样调用父类子类的属性呢? 比如我想从zoo这个类调用父类和子类的属性 用set和get吗? 这个super是怎么用的啊??????
...全文
465 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
keeya0416 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 c5153000 的回复:]
Java code
Animal a1 = new Fish ("鱼");
a1.move();
((Fish)a1).name = "232323";;
System.out.println(a1.name);
为什么我转成fish他报错说我调用的是父类的name 呢
[/Quote]
这个要改成 System.out.println(((Fish)a1).name);
猫儿爷爷 2010-03-25
  • 打赏
  • 举报
回复
		Animal a1 = new Fish ("鱼");
a1.move();
((Fish)a1).name = "232323";;
System.out.println(a1.name);

为什么我转成fish他报错说我调用的是父类的name 呢
keeya0416 2010-03-25
  • 打赏
  • 举报
回复
看下那个继承的空间分配和引用的引用范围,这个就比较好理解了
keeya0416 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 c5153000 的回复:]
我是这样想的 他fish有个私有属性 构造方法里面的this是指那个fish的那个私有属性 不知道对不对这样理解[/Quote]
你那个
Fish ( String name )
{
this.name = name ;
this.legs = legs ;
legs = 0 ;
}
没传参数进来的时候 this.legs = legs ;这两边的legs其实都是this.legs;
猫儿爷爷 2010-03-25
  • 打赏
  • 举报
回复
0.0 是我搞错了 我没有在构造方法里给他这个legs参数 那么这个legs 可以直接写成legs = 0 ;
keeya0416 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 c5153000 的回复:]
引用 1 楼 chenliuyang 的回复:
super.属性名 一般都不这么用, 属性都private了。 得用get set方法

就是说 如果属性是public 的 那么可以用 super.name;这样来调用是这样的嘛?
比如我在父类name 子类也有name
那么我现在在另外一个类里写方法 然后 父类引用 指向 子类
或则说 我要怎么才能调用到父类的属性 就是父类和子类的属……
[/Quote]

如果父类子类属性同名的话,你创建对象时候引用是什么类型,就调用的谁的。
如:
Animal an = new Fish("adas");
an.name 就是父类的了,子类的被擦除了。想用子类的话得强转((Fish)an).name;
猫儿爷爷 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 keeya0416 的回复:]
LZ的代码中
Fish ( String name )
{
this.name = name ;
this.legs = legs ; //这个是干什么用的呢?没什么实际意义吧
legs = 0 ;
}
[/Quote]
class Fish extends Animal
{
private String name ;
private int legs ;

Fish ( String name )
{
this.name = name ;
this.legs = legs ;
legs = 0 ;
}


我是这样想的 他fish有个私有属性 构造方法里面的this是指那个fish的那个私有属性 不知道对不对这样理解
zyus1987 2010-03-25
  • 打赏
  • 举报
回复
怎样调用父类子类的属性呢? 比如我想从zoo这个类调用父类和子类的属性 用set和get吗? 这个super是怎么用的啊??????
不知道LZ想问啥呢?
难道是要调用子对象属性?
如果是的话只能用get和set了,因为他们都是private
keeya0416 2010-03-25
  • 打赏
  • 举报
回复
LZ的代码中
Fish ( String name )
{
this.name = name ;
this.legs = legs ; //这个是干什么用的呢?没什么实际意义吧
legs = 0 ;
}
Ark032425 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 c5153000 的回复:]
引用 1 楼 chenliuyang 的回复:
super.属性名 一般都不这么用, 属性都private了。 得用get set方法

就是说 如果属性是public 的 那么可以用 super.name;这样来调用是这样的嘛?
比如我在父类name 子类也有name
那么我现在在另外一个类里写方法 然后 父类引用 指向 子类
或则说 我要怎么才能调用到父类的属性 就是父类和子类的属……
[/Quote]
就是
猫儿爷爷 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chenliuyang 的回复:]
super.属性名 一般都不这么用, 属性都private了。 得用get set方法
[/Quote]
就是说 如果属性是public 的 那么可以用 super.name;这样来调用是这样的嘛?
比如我在父类name 子类也有name
那么我现在在另外一个类里写方法 然后 父类引用 指向 子类
或则说 我要怎么才能调用到父类的属性 就是父类和子类的属性都一样 他要怎么区别你调用的是父类还是子类的属性呢
chenliuyang 2010-03-25
  • 打赏
  • 举报
回复
super.属性名 一般都不这么用, 属性都private了。 得用get set方法

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧