普通方法:没有顺序,任意调用
构造方法:任何类的构造方法中,如果构造方法中没有显示的调用super(…),那么Java 会默认调
用super()作为父类的初始化方法,所以在写不写super()方法,没 有关系
面向对象特征之三-多态(Polymorphism):多态性是指允许不同软件元素对同一消息作出响应
把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
赋值之后,父类型的引用就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲
执行期间(非编译期)判断所引用的实际类型,根基其实际类型调用相应的方法
父类方法&子类方法都在code Segment中
实际运行调用父类/子类方法?
即由实际运行期创建的对象类型来决定
前提条件:
继承
复写
父类引用指向子类
有多态,就可以升高代码的可扩展性!
class Animal{
public String name;
public Animal(String name){
this.name = name;
}
}
class Dog extends Animal{
public String folorColor;
public Dog(String name,StringfolorColor){
super(name); this.folorColor = folorColor;
}
}
class Cat extends Animal{
public String eyesColor;
public Cat(String name,String eyesColor){
super(name); this.eyesColor = eyesColor;
}
}
public class TestCasting{
public static void main(String args[]){
Animal a = new Animal(“a”);
Cat c = new Cat(“c”,“cEyesColor”);
Dog d = new Dog(“d”,“dForlorColor”);
System.out.println(a instanceof Animal); //true
System.out.println(c instanceof Animal); //true
System.out.println(d instanceof Animal); //true
System.out.println(a instanceof Dog); //false
a = new Dog(“d2”,“d2ForlorColor”); //父类引用指向子类对象,向上转型
System.out.println(a.name); //可以访问
//System.out.println(a.folorColor);
//!error 不可以访问超出Animal自身的任何属性
System.out.println(a instanceof Animal); //是一只动物 System.out.println(a instanceof Dog); //是一只狗,但是不能访问狗里面的属性
Dog d2 = (Dog)a; //强制转换
System.out.println(d2.folorColor); //将a强制转换之后,就可以访问狗里面的属性了
}
}
关于编程语言及工具就介绍完了,您有什么想法可以联系小编。