《java基础知识点总结.docx》由会员分享,可在线阅读,更多相关《java基础知识点总结.docx(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品名师归纳总结Created by AIwen on 2022/5/14 、java 就是面对对象的程序设计语言 ; 类可被认为就是一种自定义的数据类型 , 可以使用类来定义变量 , 全部使用类定义的变量都就是引用变量 , 它们将会引用到类的对象。类用于描述客观世界里某一类对象的共同特点 , 而对象就就是类的详细存在 ,java 程序使用类的构造器来创建该类的对象。java也支持面对对象的三大特点: 封装、继承、与多态。java供应了 private、 protected、与 public三个拜访掌握修饰符来实现良好的封装, 供应了 extends关键字让子类继承父类, 子类继承父类就可以继
2、承到父类的成员变量与与方法, 假如拜访掌握答应, 子类实例可以直接调用父类里定义的方法。继承就是实现类复用的重要手段。使用继承关系来实现复用时 , 子类对象可以直接赋给父类变量, 这个变量具有多态性。面对对象的程序设计过程中有两个重要的概念: 类Class与对象 object,也被称为实例 ,instance。类可以包含三种最常见的成员 : 构造器、成员变量、与方法。构造器用于构造该类的实例 ,java 语言通过 new 关键字类调用构造器 , 从而返回该类的实例。 构造器就是一个类创建对象的根本途径 , 假如一个类没有构造器 , 这个类通常无法创建实例。因此 java 语言供应了一个功能 :
3、 假如程序员没有为一个类编写构造器 , 就系统会为该类供应一个默认的构造器 , 这个构造器总就是没有参数的。一旦程序员为一个类供应了构造器 , 系统将不再为该类供应构造器。构造器用于对类实例进行初始化操作, 构造器支持重载 , 假如多个重载的构造器里包含了相同的初始化代码, 就可以把这些初始化代码放置在一般初始化块里完成, 初始化块总在构造器执行之前被调用。静态初始化块代码用于初始化类, 在类初始化阶段被执行。假如继承树里某一个类需要被初始化时, 系统将会同时初始化该类的全部父类。构造器修饰符 : 可以就是 public、protected、private其中之一 , 或者省略构造器名 : 构
4、造器名必需与类名相同。留意 : 构造器既不能定义返回值类型, 也不能使用 void声明构造器没有返回值。假如为构造器定义了返回值类型, 或使用 void声明构造器没有返回值, 编译时不会出错 , 但 java会把这个所谓的构造器当成方法来处理它就不再就是构造器。实际上类的构造器就是有返回值的, 当使用 new 关键字来调用构造器时, 构造器返回该类的实例, 可以把这个类的实例当成构造器的返回值。因此构造器的返回值类型总就是当前类, 无须定义返回值类型。不要在构造器里显式的使用return来返回当前类的对象 , 由于构造器的返回值就是隐式的。java类名必需就是由一个或多个有意义的单词连缀而成的
5、, 每个单词首字母大写, 其她字母全部小写, 单词与单词之间不要使用任何分隔符。成员变量 :成员变量的修饰符 :public、protected、private、static、final前三个只能显现一个再与后面的修饰符组合起来修饰成员变量 , 也可省略。成员变量 : 由一个或者多个有意义的单词连缀而成, 第一个单词首字母小写, 后面每个单词首字母大写, 其她字母全部小写, 单词与单词之间不要使用任何分隔符。类型 : 可以就是 java语言答应的任何数据类型, 包括基本类型与引用类型。成员方法 :方法修饰符 :public、protected、private、static、final、abst
6、ract,前三个只能显现一个 ,static与 final最多只能显现其中的一个 , 与 abstract组合起来使用。也可省略。返回值类型 : 可以就是 java语言的答应的任何数据类型, 包括基本类型与引用类型。方法名 : 与成员变量的方法命名规章相同, 通常建议方法名以英文动词开头。方法体里多条可执行语句之间有严格的执行次序, 排在方法体前面的语句总先执行, 排在方法体后面的语句总就是后执行。可编辑资料 - - - 欢迎下载精品名师归纳总结static就是一个特别的关键字, 它可用于修饰方法、 成员变量等成员。 static修饰的成员说明它属于这个类本身, 而不属于该类的单个实例 , 因
7、此通过把static修饰的成员变量与方法被称为类变量、类方法 静态成员变量 , 静态成员方法 ; 不使用 static修饰的成员变量与方法称为实例变量与实例方法 非静态成员变量 , 非静态成员方法 。静态成员不能直 接拜访非静态成员。static的真正作用就就是用于区分成员变量、方法、内部类、初始化块, 这四种成员究竟属于类本身仍就是属于实例。有 static修饰的成员属于类本身 , 没有类修饰的成员属于该类的实例。java类大致有如下作用:定义变量创建对象调用类的类方法或拜访类的类变量。定义一个类就就是为了重复创建该类的实例, 同一个类的多个实例具有相同的特点, 而类就就是定义了多个实例的共
8、同特点。类里定义的方法与成员变量都可以通过类或实例来调用。Static修饰的方法与成员变量, 既可通过类来调用 , 也可通过实例来调用 ; 没有使用 static修饰的一般方法成员变量, 只可通过实例来调用。Person p=new Person;这行代码创建了一个Person 实例 , 也被称为 Person 对象 , 这个 Person 对象被赋给 p 变量。在这行代码中实际上产生了两个东西 , 一个就是 p 变量 , 一个就是 Person 对象。 P 引用变量本身只储备了一个的址值 ,并未包含任何实际数据 , 但它指向实际的 Person 对象。Person 对象由多块内存组成 , 不
9、同内存块分别储备了 Person 对象的不同成员变量。类就是一种引用数据类型 , 因此程序中定义的 Person 类型的变量实际上就是一个引用 , 它被存放在栈内存里 , 指向实际的 Person 对象; 而真正的 Person 对象就存放在堆内存中。当一个对象被创建胜利以后, 这个对象将储存在堆内存中,java程序不答应直接拜访堆内存中的对象, 只能通过该对象的引用操作该对象。堆内存里的对象可以有多个引用, 即多个引用变量指向同一个对象。假如堆内存里的对象没有任何变量指向该对象, 那么程序将无法再拜访该对象, 这个对象也就变成了垃圾,java垃圾回收机制将回收该对象 , 释放该对象所占的内存
10、区。对象的 this引用Java 供应了一个 this关键字 ,this关键字总就是指向调用该方法的对象。This 作为对象的默认引用有两种情形:构造器中引用该构造器正在初始化的对象; 在方法中引用调用该方法的对象。This 关键字最大的作用就就是让类中一个方法, 拜访该类里的另一个方法或者实例变量。Java 答应对象的一个成员直接调用另一个成员, 可以省略 this前缀。假如在 static修饰的方法中使用this关键字 , 就这个关键字就无法指向合适的对象, 所以 ,static修饰的方法中不能使用 this引用。Java 编程时不要使用对象去调用static修饰的成员变量、方法、而就是应
11、当使用类去调用static修饰的成员变量、方法。假如的确需要在静态方法中拜访另一个一般方法, 就只能重新创建一个对象。大部分的时候 , 一般方法拜访其她方法、成员变量时无须使用this前缀 , 但假如方法里有个局部变量与成员变量同名,但程序又需要在该方法里拜访这个被掩盖的成员变量, 就必需使用 this前缀。This引用也可以用于构造器中作为默认引用, 由于构造器时直接使用new 关键字来调用 , 而不就是使用对象来调用的,所以 this在构造器中代表该构造器正在初始化对象。方法 :Java 里的方法不能独立存在, 全部的方法都必需定义在类里。假如这个方法就是用来static修饰 , 就这个方
12、法属于这个类 , 否就这个方法属于这个类的实例。执行方法时, 必需使用类或者对象作为调用者。同一个类的一个方法调用另外一个方法时 , 假如被调方法就是一般方法, 就默认使用this作为调用者 ; 假如被调用方法就是静态方法, 就默认使用类作为调用者。也就就是说java 中瞧起来某些方法可以被独立执行, 但实际上仍就是使用this或者类来作为调用者。Java 里方法参数传递方式只有一种: 值传递。所谓值传递 , 就就是讲实际参数值的副本 复制品 传入方法内 , 而参数本身不会受到任何影响。从 JDK1、 5 之后,java答应定义形参个数可变的参数, 从而答应为方法指定数量不确定的形参。假如在定
13、义方法时, 在可编辑资料 - - - 欢迎下载精品名师归纳总结最终一个形参的类型后增加三点 , 就说明该形参可以接受多个参数值, 多个参数值被当成数组传入。public class Varargs / 定义形参可变的方法public static void testint a,String、 books/books被当成数组处理forString tmp:booksSystem、out 、printlntmp;System、out 、 printlna;public static void mainString args/ 调用 test方法test5,hello,world,aa;数组形式的
14、形参可以处于形参列表的任意位置, 但个数可变的形参只能处于形参表的最终。也就就是说最多只能有一个长度可变的形参。形参可变与传入数组的区分:public static void testint a,String、 books; public static void testint a,String books;test5,aa,bb,cc;test5,new Stringaa,bb,cc;方法重载 :Java 答应同一个类里定义多个同名方法, 只要形参列表不同就行。假如同一个类中包含了两个或两个以上方法的方法名相同 , 但形参列表不同 , 就被称为方法的重载。Java 程序确定一个方法需要三个要
15、素: 调用者 ; 方法名 ; 形参列表。方法的重载要求就就是两同一不同: 同一个类中方法名相同, 参数列表不同。至于方法的其她部分, 如方法返回值类型、修饰符等 , 与方法重载没有任何关系。public class OverloadVarargs public void testString msgSystem、out 、 println只有一个参数的 test;/ 由于前面已经有了一个字符串参数的方法 , 就长度可变形参里不包含一个字符串参数的形式public void testString、 booksSystem、out 、println形参可变的 test方法 ;public stat
16、ic void mainString args OverloadVarargs olv=new OverloadVarargs;/ 下面两次调用将执行其次个test方法olv 、test;olv、testaa,bb;/ 将调用第一个 test方法olv 、testaa;/ 将调用其次个 test方法olv 、testnew Stringaa;可编辑资料 - - - 欢迎下载精品名师归纳总结Java 中变量分为 : 成员变量与局部变量。成员变量被分为类变量与实例变量两种, 定义成员变量时没有static修饰的就就是实例变量 , 有 static修饰的就就是类变量。变量的命名 : 从程序的可读性角
17、度来瞧, 应当就是多个有意义的单词连缀而成, 其中第一个单词首字母小写, 后面每个单词首字母大写。假如通过一个实例修改了类变量的值, 由于这个类变量并不属于它, 而就是属于它对应的类。因此 , 修改的依旧就是类变量 , 与通过该类来修改类变量的结果完全相同, 这会导致该类的其她实例来拜访这个类变量时也将获得这个被修改过的值。成员变量无须显式初始化, 只要为一个类定义了类变量或实例变量, 系统就会在这个类的初始化阶段或创建该类的实例时 , 进行默认初始化。实例变量随实例的存在而存在, 而类变量就随类的存在而存在。实例也可拜访类变量, 同一个类的全部实例拜访类变量时 , 实际上拜访的就是该类本身的
18、同一个变量, 也就就是说 , 拜访了同一片内存区。局部变量依据定义形式的不同, 又可分为三种形式 : 形参 , 方法局部变量 , 代码块局部变量 ; 局部变量除了形参之外,都必需显示初始化。在同一个类里 , 成员变量的作用范畴就是整个类内有效, 一个类里不能定义两个同名的成员变量, 即使一个就是类变量 , 一个就是实例变量也不行; 一个方法里不能定义两个同名的方法局部变量, 方法局部变量与形参也不能同名; 同一个方法中不同代码块内局部变量可以同名; 假如先定义代码块局部变量, 后定义方法局部变量, 前面定义的代码块局部变量与后面定义的方法局部变量也可同名、Java答应局部变量与成员变量同名,
19、假如方法里的局部变量与成员变量同名, 局部变量会掩盖成员变量, 假如需要在这个方法里引用被掩盖的成员变量, 就可使用 this对于实例变量 或类名 对于类变量 作为调用者来限定拜访成员变量。public class VariableOverrideTest / 定义一个 name实例变量private String name=李刚 ;/ 定义一个 price类变量private static doubleprice =78、0; public static void mainString args/ 方法里局部变量掩盖成员变量 , 将输出 price的局部变量 65int price=65;S
20、ystem、out 、 printlnprice;/ 使用类名作为 price变量的限定 , 将输出 price类变量的值System 、out 、 printlnVariableOverrideTest、price ; new VariableOverrideTest、info;public void info/ 方法里的局部变量 , 局部变量掩盖成员变量 , 输出 name局部变量的值 : 孙悟空String name=孙悟空 ; System、out 、 printlnname;/ 将输出 name实例的值 : 李刚System 、out 、 printlnthis、name;当系统加载
21、类或创建该类的实例时, 系统自动为成员变量安排内存空间, 并在安排内存空间后, 自动为成员变量指定初始值。Person p1=new Person;时, 假如这行代码就是第一次使用Person 类, 就系统通常会在第一次使用Person 类时加载这个类 , 并初始化这个类。局部变量定以后 , 必需经过显式初始化后才能使用, 系统不会为局部变量执行初始化。局部变量不属于任何类或者实例,因此它总就是储存在其所在方法的栈内存中。假如局部变量时基本类型的变量, 就直接把这个变量的值储存在该变量对可编辑资料 - - - 欢迎下载精品名师归纳总结应的内存中 ; 假如局部变量就是一个引用类型的变量 , 就这
22、个变量里存放的就是的址 , 通过该的址引用到该变量实际引用的对象或者数组。栈内存中的变量无须系统垃圾回收 , 往往随就是方法或代码块的运行终止而终止。假如定义的某个变量就是用于描述某个类或某个对象的固有信息的 , 这种变量应当定义成成员变量。 假如这种信息对这个类的全部实例完全相同 , 或者说它就是类相关的 , 就该定义成类变量 ; 假如这个信息就是实例相关的 , 就应当定义成实例变量。用于储存某个类或某个实例状态信息的变量通常应当使用成员变量。假如某个信息需要在某个类的多个方法之间进行共享 , 就这个信息应当使用成员变量来储存。隐匿与封装拜访掌握符用于掌握一个类的成员就是否可以被其她类拜访。
23、Java 供应了 3 个拜访掌握修饰符 :private,protected,与 public,仍有一个默认拜访掌握修饰符defaultPrivate当前类拜访权限 ;default包拜访权限 ;protected子类拜访权限 : 假如一个成员使用protected拜访修饰符修饰 , 那么这个成员既可以被同一个包中的其她类拜访, 也可以被不同包中子类拜访。通常情形下, 使用 protected 修饰的方法 , 通常期望其子类来重写这个方法。Public公共拜访权限 对于局部变量而言 , 其作用域就就是它所在的方法, 不行能被其她类拜访 , 因此不能使用拜访掌握符来修饰。外部类只能有两种拜访掌握
24、级别:public与默认 , 不能使用 private与 protectedpublic class Person private String name; private int age;public void setNameString nameifname、length6|name、length 100 | age 0 System、out 、printlnerror; else this、age = age;public int getAgereturn this、 age;public class PersonTest public static void mainString ar
25、gs Person p=new Person;/ 下面的变量不会运行错误 , 但就是会提示错误p、setAge1000;/ 由于上面没有胜利设置 p 的 age 成员, 故输出 0可编辑资料 - - - 欢迎下载精品名师归纳总结System 、out 、 printlnp、getAge;/ 胜利设置 p 的 age 成员p、setAge30;System、out 、 printlnp、getAge;/ 胜利设置 p 的 name成员p、setName 李刚 ;System、out 、 printlnp、getName;构造器 :构造器最大的用途就是创建对象时执行初始化。当创建一个对象时, 系统
26、为这个对象的实例变量进行默认初始化, 这种默认的初始化把全部基本类型的实例变量设为0 对数值型实例变量 或 false对布尔型实例变量 , 把全部引用类型的实例变量设为 null。假如想转变这种默认的初始化, 想让系统创建对象时就位该对象的实例变量显式指定初始值, 就可以通过构造器来实现。由于构造器主要用于被其她方法调用 , 用以返回该类的实例 , 因而通常把构造器设置成 public 拜访权限 , 从而答应系统中任何位置的类来创建该类的对象。假如设置成 protected, 主要用于被子类调用 ; 设置为 private, 阻挡其她类创建该类的实例。假如系统中包含了多个构造器 , 其中一个构
27、造器 B 的执行体里完全包含另一个构造器 A 的执行体。 为了这构造器 B 中调用构造器 A 中的初始化代码 , 又不会重新创建一个 java 对象 , 可以使用 this 关键字来调用相应的构造器。public class Apple public String name; public String color; public double weight;/ 两个参数的构造器public AppleString name,String color this、 name=name;this、 color=color;/ 三个参数的构造器public AppleString name,Stri
28、ng color,double weight/ 通过 this调用另一个重载的构造器的初始化代码thisname,color;/ 通过 this引用该构造器正在初始化的 Java 对象this、 weight=weight;使用 this调用另一个重载的构造器只能在构造器中使用, 而且必需作为构造器执行体的第一条语句。使用 this调用重载的构造器时 , 系统会依据 this后括号里的实参来调用形参列表与之对应的构造器类的继承 :Java 继承通过 extends关键字来实现实现继承的类被称为子类, 被继承的类被称为父类, 有的也称为基类、超类。由于子类就是一种特别的父类, 因此父类包含的范畴
29、总比子类包含的范畴要大。Java 子类不能获得父类的构造器public class Fruit public double weight; public void infoSystem、out 、 printlnweight;可编辑资料 - - - 欢迎下载精品名师归纳总结public class Apple extends Fruit /Apple类继承了 Fruit类, 所以 Apple 对象也就有了 weight 成员变量与 info方法public static void mainString args Apple a=new Apple;/Apple对象本身没有 weight 成员变
30、量 , 但就是,Apple 父类有 weight 成员变量 , 所以, 也可以拜访 Apple 对象的 weight 成员变量a、weight=56;/ 调用 Apple 对象的 info方法a、info;Java 类只能有一个直接父类, 实际上 ,Java类可以有无限多个间接父类。重写父类方法 :子类扩展了父类 , 子类就是一个特别的父类。大部分时候 , 子类总就是以父类为基础, 额外增加新的成员变量与方法。但有一种情形例外 : 子类需要重写父类方法。public class Bird /Bird类的 fly方法public void flySystem、out 、 println我在天空中
31、飞 ;public class Ostrich extends Bird / 重写 Bird 类的 fly方法public void flySystem、out 、 println我在陆的上飞 ;public static void mainString args/ 创建 Ostrich对象Ostrich or=new Ostrich;/ 执行 Ostrich对象的 fly方法, 将输出“我在陆的上飞”or 、fly;这种子类包含与父类同名方法的现象被称为方法重写Override,也被称为方法掩盖。可以说子类重写了父类的方法,也可以说子类掩盖了父类的方法。方法的重写要遵循“两同两小一大”规章,
32、 “两同”即方法名相同、形参列表相同; “两小”指的就是子类方法的返回值类型应比父类方法返回值类型更小或相等, 子类方法声明抛出的反常类应比父类声明抛出的反常类更小或相等; “一大”指的就是子类方法的拜访权限应比父类方法的拜访权限更大或相等。掩盖方法与被掩盖方法要么都就是类方法, 要么都就是实例方法。当子类掩盖了父类方法后, 子类的对象将无法拜访父类中被掩盖的方法, 但可以在子类方法中调用被掩盖的方法。假如需要在子类方法中调用父类中被掩盖的方法, 就可以使用 super 被掩盖的就是实例方法 或者父类类名 被掩盖的就是类方法 作为调用者来调用父类中被掩盖的方法。假如父类方法具有private拜
33、访权限 , 就该方法对其子类就是隐匿的, 因此其子类无法拜访该方法, 也就就是无法重写该方法。重载只要发生在同个类多个同名方法之间, 而重写发生在子类与父类同名方法之间。父类方法与子类方法之间也可能发生重载。Super 限定:可编辑资料 - - - 欢迎下载精品名师归纳总结Super 就是 Java 供应的一个关键字 ,super 用于限定该对象调用它从父类继承得到的实例变量或方法。 Super 不能显现在 static 修饰的方法中。 Static 修饰的方法就是属于类的 , 该方法的调用者可能就是一个类 , 而不就是对象 , 因而 super 限定就失去了意义。假如在构造器中使用 supe
34、r, 就 super 用于限定该构造器初始化的就是该对象从父类继承得到的实例变量 , 而不就是该类自己定义的实例变量。假如子类定义了与父类同名的实例变量 , 就会发生子类实例变量隐匿父类实例变量的情形。在正常情形下 , 子类里定义的方法直接拜访该实例变量 , 默认会拜访到子类中定义的实例变量 , 无法拜访到父类中被隐匿的实例变量。在子类定义的实例方法中可以通过 super 来拜访父类中被隐匿的实例变量。public class BaseClass public int a=5;public class SubClass extends BaseClass public int a=7;publ
35、ic void accessOwner System、out 、 printlna;public void accessBase/ 通过 super 来限定拜访从父类继承得到的 a 实例变量System 、out 、 printlnsuper、a;public static void mainString args SubClass sb=new SubClass;sb、accessBase; /输出 5sb、accessOwner; /输出 7假如在某个方法中拜访名为a 的成员变量 , 但没有显式指定调用者, 就系统查找 a 的次序为 :1. 查找该方法中就是否出名为a 的局部变量2. 查找
36、当前类中就是否包含名为a 的成员变量3. 查找 a 的直接父类中就是否包含名为a 的成员变量 , 一次上溯 a 的全部父类 , 直到 java 、lang 、Object类, 假如最终不能找到名为 a 的成员变量 , 就系统显现编译错误。假如被掩盖的就是类变量, 在子类的方法中就可以通过父类名作为调用者来拜访被掩盖的类变量当程序创建一个子类对象时, 系统不仅会为该类中定义的实例变量安排内存, 也会为它从父类继承得到的全部实例变量安排内存 , 即使子类定义了与父类中同名的实例变量。假如在子类里定义了与父类中已有变量同名的变量, 那么子类中定义的变量会隐匿父类中定义的变量。留意不就是完全掩盖 ,
37、因此系统在创建子类对象时, 依旧会为父类中定义的、被隐匿的变量安排内存空间。public class Parent public String tag=helloworld;public class Derived extends Parent / 定义一个私有的 tag 实例变量来隐匿父类的 tag 实例变量private String tag=abc;public class HideTest public static void mainString args Derived d=new Derived;/ 程序不行拜访 d 的私有变量 tag, 所以会显现编译错误/System、out
38、 、printlnd、tag;可编辑资料 - - - 欢迎下载精品名师归纳总结/将 d 变量显式的向上转型为 Parent 后, 即可拜访 tag 实例变量System 、out 、 printlnParentd、tag;调用父类构造器 :子类不会获得父类的构造器, 但子类构造器里可以调用父类构造器的初始化代码。在一个构造器里调用另一个重载的构造器使用 this调用来完成 , 在子类构造器中调用父类构造器使用super 调用来完成。public class Base public double size; public String name;public Basedouble size,St
39、ring name this、 size=size;this、 name=name;public class Sub extends Base public String color;public Subdouble size,String name,String color/ 通过 super 调用父类构造器的初始化过程supersize,name; this、color=color;public static void mainString argsSub s=new Sub5、6, 测试 ,red;System、out 、 printlns、size+,+s、name+,+s 、colo
40、r;Super 调用的就是其父类的构造器, 而 this调用的就是同一个类中重载的构造器; 因此 , 使用 super调用父类的构造器也必需显现在子类构造器执行体的第一行, 所以 this调用与 super 调用不会同时显现。当调用子类构造器来初始化子类对象时, 父类构造器总会在子类构造器之前执行; 不仅如此 , 执行父类构造器时 , 系统会再次上溯执行其父类的构造器依次类推, 创建任何 java 对象 , 最先执行的总就是java 、lang 、Object类的构造器。public class Creature public CreatureSystem、out 、 println无参 ;p
41、ublic class Animal extends Creature public AnimalString nameSystem、out 、 printlnAnimal带一个参数的构造器 +name;public AnimalString name,int age/this调用同一个重载构造器thisname;System、out 、 printlnAnimal带两个参数的构造器 +age;public class Wolf extends Animal public Wolf可编辑资料 - - - 欢迎下载精品名师归纳总结super灰太狼 ,4;System、out 、 printlnw
42、olf无参构造器 ;public static void mainString args Wolf wf=new Wolf;/ 虽然 main 方法只创建了一个 Wolf 对象, 但系统在底层完成了复杂的操作 , 运行将会得到/无参/Animal带一个参数的构造器灰太狼/Animal带两个参数的构造器 4/wolf无参构造器创建任何对象总就是从该类所在继承树最顶层类的构造器开头执行, 然后依次向下执行 , 最终才执行本类的构造器。假如某个父类通过 this调用了同类中重载的构造器, 就会依次执行此父类的多个构造器。4、7 多态:Java 引用变量有两个类型 : 一个就是编译时类型, 一个就是运
43、行时类型。编译时类型由声明该变量时使用的类型打算,运行时类型由实际赋给该变量的对象打算。假如编译时类型与运行时类型不一样, 就可能显现所谓的多态。public class BaseClass public int book=6; public void baseSystem、out 、 println父类的一般方法 ;public void testSystem、out 、 println父类被掩盖的方法;public class SubClass extends BaseClass / 重写定义一个 book 实例变量隐匿父类的 book 实例变量public String book=abc; public void testSystem、out 、 println子类的掩盖父类的方法;public void subSystem、out 、 println子类