发表于: 2016-06-29 10:55:23

0 1865


补充下昨天的日报:


今天完成的事情:


1.学习java基础语法之对象转型跟多态的概念,并动手敲代码。


这个对象转型的一些概念如下:


对象转型(casting)
一个基类的引用类型变量可以“指向”其子类的对象;
一个基类的引用不可以访问其子类对象新增加的成员(属性和方法);
可以使用引用变量insteadof类名来判断该引用型变量所“指向”的对象
是否属于该类或该类的子类;
子类的对象可以当做基类的对象来使用称做向上转型(upcasting),反之称为向下转型(downcasting)


对于多态的概念理解如下:


也叫动态绑定和多态或者迟绑定
TestPolymoph/Test.java
动态绑定是指在执行期间(而非编译期间)判断所引用对象的实际类型,根据实际类型的调用其相应的方法。
上面例子中,根据Lady对象的成员变量pet所引用的不同的实际类型而调用相应的enjoy的方法。
多态的必要条件:

1.要有继承;2.要有重写;父类引用指向子类对象。


相关代码如下:


abstract class Animal{
private String name;
   Animal(String name){this.name = name;}
public void enjoy(){
System.out.println("叫声......");
   }
}

class Cat extends Animal{
private String eyesColor;
   Cat(String n,String c){super(n);eyesColor = c;}
public void enjoy(){
System.out.println("猫叫声 ......");
   }
}

class Dog extends Animal{
private String furColor;
   Dog(String n,String c){super(n);furColor = c;}
public void enjoy(){
System.out.println("狗叫声......");
   }
}

class Bird extends Animal{
Bird(){
super("bird");
   }
public void enjoy(){
System.out.println("鸟叫声......");
   }
}

class Lady{
private String name;
   private Animal pet;
   Lady(String name,Animal pet){
this.name = name;this.pet = pet;
   }
public void myPetEnjoy(){pet.enjoy();}
}

public class Test {
public static void main(String args[]){
Cat c = new Cat("catname","blue");
       Dog d = new Dog("dogname","black");
       Bird b = new Bird();
       Lady l1 = new Lady("l1",c);
       Lady l2 = new Lady("l2",d);
       Lady l3 = new Lady("l3",b);
       l1.myPetEnjoy();
       l2.myPetEnjoy();
       l3.myPetEnjoy();
   }

}

上述代码的执行结果如下:


猫叫声......

狗叫声......

鸟叫声......


注意在执行过程中而非编译过程l1.myPetEnjoy,l2.myPetEnjoy,l2.myPetEnjoy会去寻找自己的enjoy方法并打印,cat,dog还有bird都引用父类的方法,并对该方法进行了重写,所以最后打印结果如上所示。


多态的好处:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化,提高程序的课拓展性。


明天计划的事情:


1.查看springmvc的官方文档,重新搭建task4的项目并对整个项目的目录结构熟悉。


遇到的问题:


1.对于多态的概念很模糊,不过动手敲一遍代码然后执行之后慢慢理解了。(已解决)


2.task4中的profession.css变成绿色的,师兄说这个文件被添加到svn上了,但是还是没有被找到,先跳过这一块,把项目的目录结构理解清楚。


收获:


学习了对象转型跟多态的概念并手敲代码。



返回列表 返回列表
评论

    分享到