class Animal{
public String name;
Animal(String name){
this.name=name;
}
public void enjoy(){
System.out.println("叫声");
}
public void print(){
System.out.println(name);
}
}
class Cat extends Animal{
private String eyec;
Cat(String name,String c){
super(name);
eyec=c;
}
public void enjoy(){
System.out.println("Cat叫");
}
}
class Dog extends Animal{
private String furc;
Dog(String name,String c){
super(name);
furc=c;
}
public void enjoy(){
System.out.println("Dog叫");
}
}
class Lady{
public String name;
private Animal pet;
Lady(String name,Animal pet){
this.name=name;
this.pet=pet;
}
public void petenjoy(){
pet.enjoy();
}
public void print(){
System.out.println(name);
}
} public class T2{
public static void main(String[] args){
Animal a = new Animal("animalname");
Cat c = new Cat("catname","blue");
Dog d = new Dog("Dogname","black");
Lady l1= new Lady("l1",c);
Lady l2= new Lady("l2",d);
// l1.petenjoy();
// l2.petenjoy();
a.print();
c.print();
d.print();
l1.print();
l2.print();
}
}子类 Cat、Dog继承来的name变量是怎么传递的,我是个初学者,自己始终也弄没清楚,请各位高手帮帮我,指点一下。
public String name;
Animal(String name){
this.name=name;
}
public void enjoy(){
System.out.println("叫声");
}
public void print(){
System.out.println(name);
}
}
class Cat extends Animal{
private String eyec;
Cat(String name,String c){
super(name);
eyec=c;
}
public void enjoy(){
System.out.println("Cat叫");
}
}
class Dog extends Animal{
private String furc;
Dog(String name,String c){
super(name);
furc=c;
}
public void enjoy(){
System.out.println("Dog叫");
}
}
class Lady{
public String name;
private Animal pet;
Lady(String name,Animal pet){
this.name=name;
this.pet=pet;
}
public void petenjoy(){
pet.enjoy();
}
public void print(){
System.out.println(name);
}
} public class T2{
public static void main(String[] args){
Animal a = new Animal("animalname");
Cat c = new Cat("catname","blue");
Dog d = new Dog("Dogname","black");
Lady l1= new Lady("l1",c);
Lady l2= new Lady("l2",d);
// l1.petenjoy();
// l2.petenjoy();
a.print();
c.print();
d.print();
l1.print();
l2.print();
}
}子类 Cat、Dog继承来的name变量是怎么传递的,我是个初学者,自己始终也弄没清楚,请各位高手帮帮我,指点一下。
首先是有属性了,看里边的super(name);这里就是告诉JVM,调用哪一个父类构造函数.
实际就是调用Animal的构造函数,这时候就赋值了
想自己彻底弄明白,整个断点,单步运行一下
走父类的时候穿进去的
这是马士兵的教程是不是在建立子类对象的时候子类里有着父类的对象,当用SUPER调用父类的构造方法时,实际上是给子类对象里的那个父类对象的name变量赋值,子类的这个name实际上就是子类里父类的那个,是同一个。我是不是可以这样理解。谢谢大家
首先,子类对象和父类对象,既然说到对象。那么他们俩肯定不是一个东西,在内存中他们俩分别指的不同的区域。
其次,你应该这么理解。子类和父类都有一个名叫name的成员变量。其中子类的name是从父类那里继承来的。
……
那name的值也是继承来的吗?
实际上就是调用了 父类的构造方法
Animal(String name){
this.name=name;
}
要知道这里Animal类里有一个参数的构造方法,才可以这样调。