7.19
今天,看了好多。学了接口,多态,还有构造方法的引入。子类中的构造方法里,第一行有一个隐式的代码
public class Student{
public Student(){
super();
}
知道了,方法里有就近原则。
}
接口是大的方面。实现类是具体一个人要做什么。
继承中,子类拥有父类中的属性,可以调用。
多态的特点:
做梦都要背出来的三个特点
1,要有继承
2,要有重写
3,父类引用指向子类。
2.现实中,关于多态的例子不胜枚举。比方说按下F1键这个动作,如果当前在Flash界面下弹出的就是AS3的帮助文档;如果当前在Word下弹出的就是Word帮助;在Windows下弹出的就是Windows帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。
多态的定义公式。
父类的类名 对象名=new 子类的类名();
接口的类名 对象名=new 实现类的类名();
instanceof运算符:
java语言的多态机制导致了引用变量的声明类型和其实际引用对象的类型可能不一致,再结合虚方法调用规则可以得出结论:声明为同种类型的两个引用变量调用同一个方法时也可能会有不同的行为。这里就引入了instanceof运算符。
比如。有一个抽象的动物类,里面有一个抽象方法,还有一个猫类,还有一个狗类。
多态出来就是。
DongWu c=new Cat();
DongWu d=new Dog();
c和d是调用的子类和父类的共有的方法,运行走的是子类的重写方法。
向下转型
Cat c1 =(Cat)c;
Cat a1=(Cat)d;//注意,这里是一个狗转换成猫。在现实中是不匹配的。是说不通的。虽然编译的时候不会报错,但是他在运行的时候会报错,出现类型不匹配。
为了防止异常的发生,我们就要用到 instanseof这个运算符来判断了。当当当当,instanseof 闪亮登场。说到判断,就想到if条件语句。二话不说,先把if条件语句打印出来。
if( c instanseof Cat){
Cat c2=(Cat)c;
c2.Cat中的特有方法;
}
if(d instanseof Dog){
Dog d2=(Dog)d;
d2.Dog类中的特有方法;
}
忘了说,instanseof这个关键字,的用法是 引用变量 instanseof 类名判断变量跟类名有没有关系。