day09

变量的分类:按照变量声明的位置划分

   1,局部变量

   2,成员变量

     (1)实例变量:没有static修饰的属性

     (2)类变量:使用static修饰的属性

局部变量和成员变量的区别

  1,声明位置

      局部变量的声明位置

    (1)方法的形参列表

    (2)方法体中

    (3)代码块

     成员变量声明的位置:类中方法、代码块等外面

  2,初始化的方式

      局部变量初始化

    (1)形参的初始化必须在调用时由实参赋值

    (2)其他局部变量必须手动初始值

      成员变量初始化

    (1)有默认值

    (2)显示初始化

    (3)构造器

    (4)set方法可再次修改值

  3,值的存储位置不同

       局部变量:栈

       成员变量:(1)实例变量:堆

                          (2)类变量:?

  4,生命周期

       局部变量:短

             当代码执行到局部变量声明处开始,到它的作用域结束

       成员变量:相对长

             随着对象的创建而创建,随着对象被垃圾回收而消亡;每个对象的成员变量是独立的

  5,修饰符不同

       局部变量:final

       成员变量:权限修饰符(4个),static,final,volatile等

二,继承(extends)

    概念:延续、保留、并且扩展

    1,继承的目的(好处)(意义):

             代码的复用、代码的扩展、可以表示事物之间is-a的关系。

    2,继承的语法格式:
           【修饰符】 class 子类  extends 父类{
              }

    3,继承的特点:
            (1)Java只支持单继承
                           一个子类只能有一个直接的父类
           (2)Java支持多层继承
                           一个子类的父类仍然可以有父类,子类可以继承所有“祖宗”类的所有属性、方法。
           (3)一个父类可以同时有很多个子类,而且子类还可以有子类
           (4)子类会继承父类所有的属性、方法,子类可以扩展父类没有的属性和方法
           (5)子类不会继承父类的构造器,但是一定会在子类的构造器中去调用父类的构造器,默认在子类的构造器的首行,会通过"super()"去调用父类的无参构造;
                     如果父类没有无参构造,那么子类的构造器的首行需要用"super(实参列表)"去显式的调用父类的有参构造。
           (6)如果一个类没有显式的继承其他类,那么它的父类就是java.lang.Object。

 this和super关键字的用法

     this:当前对象

       (1)this.属性 当成员变量与局部变量重名时,可以在“成员变量”的前面加"this."进行区别。

       (2)this.方法 表示访问当前对象的某个成员方法,完全可以省略"this."

       (3)this()或this(实参列表) 用在构造器的首行,表示调用本类的其他构造器。

     super:父类的

       (1)super.属性 当子类的属性与父类的某个可见的属性重名时,想要在子类中去表示用“父类的属性”, 可以在“父类的属性”前面加"super."

       (2)super.方法 在子类中去调用父类“被重写的方法”时,可以用"super."

       (3)super()或super(实参列表) 用在子类构造器的首行,表示调用父类的构造器

三,多态(多种形态):针对方法

       目的:使代码编写更灵活,功能更丰富

       理解:

        1,方法的重载和重写:一个功能有多种形式

        2,对象的多态性   

            某个对象在Java中可能出现编译时类型和运行时类型不一致

       多态的前提:

       (1)类有继承关系

       (2)方法的重写  

       (3)多态引用:父类的变量指向子类的对象
  出现的对象的多态性的现象

       按照父类的类型编译,运行时按照子类的类型运行,执行的方法是子类的方法体

多态的应用

    1,多态数组:元素的类型是父类的类型,元素存的是子类的对象

    2,多态参数:形参是父类类型,实参是子类类型

父子类之间类型转换

     1,向上转型:自动完成

     2,向下转型:强制完成

          向下转型之前,一定发生过向上转型

     注:父类的变量可以存储子类的对象:子类的变量不可以存储父类的对象

关键字:instanceof

      为了避免转型失败,可以在转型之前加instanceof判断

 

 

   

 

posted @ 2019-09-19 08:24  zzz222zzz  阅读(232)  评论(0编辑  收藏  举报