用于调用本类的构造方法。如果没有定义构造方法,那么就会调用父类的无参构造方法,即super。要养成良好的编程习惯:就是要加上默认的父类无参的构造方法。思考:可是如果我们没有定义无参的构造方法,而在程序中构造了有参的构造方法,那么如果方法中没有参数,那么系统还会调用有参的构造方法么?应该不会。多态:多态指的是编译时类型变化,而运行时类型不变。多态分两种:①编译时多态:编译时动态重载;②运行时多态:指一个对象可以具有多个类型。对象是客观的,人对对象的认识是主观的。例:
达内java学习笔记4
fA
imala
ewDog;查看格式名称;DogdDoga。声明父类来引用子类。(思考上面的格式)运行时多态的三原则:(应用时为覆盖)1、对象不变;(改变的是主观认识)2、对于对象的调用只能限于编译时类型的方法,如调用运行时类型方法报错。在上面的例子中:A
imala
ewDog;对象a的编译时类型为A
imal,运行时类型为dog。注意:编译时类型一定要为运行时类型的父类(或者同类型)。对于语句:DogdDoga。将d强制声明为a类型,此时d为Dog,此时d就可以调用运行时类型。注意:a和d指向同一对象。3、在程序的运行时,动态类型判定。运行时调用运行时类型,即它调用覆盖后的方法。关系运算符:i
sta
ceofai
sta
ceofA
imal这个式子的结果是一个布尔表达式a为对象变量,A
imal是类名。上面语句是判定a是否可以贴A
imal标签。如果可以贴则返回true,否则返回false。在上面的题目中:ai
sta
ceofA
imal返回True,ai
sta
ceofDog也返回True,i
sta
ceof用于判定是否将前面的对象变量赋值后边的类名。I
sta
ceof一般用于在强制类型转换之前判定变量是否可以强制转换。如果A
imala
ewA
imal;DogdDoga此时编译无误,但运行则会报错。A
imala
ewDog相当于下面语句的功能:A
imalagetA
imal;PublicstaticA
imalgetA
imalRetur
ewDog;封装、继承、多态为面向对象的三大基石(特性)。运行时的动态类型判定针对的是方法。运行程序访问的属性仍为编译时属性。Overloadi
g针对的是编译时类型,不存在运行时的多态。习题:建立一个shape类,有circle和rect子类。Shape类有zhoucha
g和area两种方法。(正方形)squ为rect子类,rect有cha用于比较长宽的差。覆盖时考虑子类的private及父类的public(考虑多态),之所以这样是避免调用A时出现实际调用B的情况。而出现错误。1129下午讲的是教程上的Module6Module67包括:面向对象高级、内部类、集合、反射(暂时不r