代码块:就是被一对大括号,所扩起起来的代码。
代码块,根据定义的位置不同,分为:局部代码块,构造代码块,静态代码块。同步代码块(后面讲)
局部代码块,定义在方法中的代码块。
构造代码块:定义在类中方法外,跟构造方法平级
静态代码代码块:定义在类中方法外,用static所修饰的代码块、
创建对象时,会调用构造代码块,而且还是优先于构造方法执行。每次创建对象,都会调用构造代码块。
静态代码块,随着类的加载而加载,优先于构造代码块执行。且只会执行一次。在静态代码块里面,只能访问静态成员。
静态代码快先执行(只能访问静态成员)--->构造代码块--->构造方法;
//多态:指的是一种事物,在不同时刻所表现出的不同状态。
//所以,猫既可以表现为猫这种形态,也可以表现为动物的这种形态。
// Cat cat = new Cat(); Animal cat = new Cat();
//1.多态的前提,必须要有继承,如果没有继承,那么多态就无从谈起。
//2.多态需要有,方法重写,当然你可以不重写,但是就失去了多态的意义。
//3.多态: 父类引用 执行子类对象 Animal an = new Cat();
左边 右边
Animal an = new Cat();
//多态的方式,来访问(成员变量)的特点:编译看左边,运行也看左边,
//多态的方式,来访问(成员方法)的特点:编译左边,运行看右边, 以子类重写的为准,当然你没有重写,那就调用父类,当然多态我们都会去重写父类的方法。
//多态的构造方法特点:先调用父类的构造方法,再调用子类的构造方法
多态优点:可以提供代码的扩展性;多态的弊端,不能调用子类特有的成员。
向下转型:
如果要调用子类特有的方法,可以向下转型;格式:子类名 +方法名(随便起)=(子类名)+父类方法名;