为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
Java入门第二季_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

Java入门第二季

IMOOC老齐 全栈工程师
难度入门
时长 4小时 0分
  • 从上面的代码中我们可以看到,成员内部类的使用方法:

    1、 Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等

    2、 Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性a

    3、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );

    4、 编译上面的程序后,会发现产生了两个 .class 文件

    其中,第二个是外部类的 .class 文件,第一个是内部类的 .class 文件,即成员内部类的 .class 文件总是这样:外部类名$内部类名.class

    另外,友情提示哦:

    1、 外部类是不能直接使用内部类的成员和方法滴

    可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。

    2、 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。如:

    运行结果:

    System.out.println("外部类中的name:" +   HelloWorld.this.name   );



    查看全部
  • 在Java中,有两种初始化块:静态初始化块和非静态初始化块。它们都是定义在类中,用大括号{}括起来,静态代码块在大括号外还要加上static关键字。

    非静态初始化块(构造代码块):
    作用:给对象进行初始化。对象一建立就运行,且优先于构造函数的运行。
    与构造函数的区别:非静态初始化块给所有对象进行统一初始化,构造函数只给对应对象初始化。
    应用:将所有构造函数共性的东西定义在构造代码块中。

    静态初始化块:
    作用:给类进行初始化。随着类的加载而执行,且只执行一次
    与构造代码块的区别:
    1)构造代码块用于初始化对象,每创建一个对象就会被执行一次;静态代码块用于初始化类,随着类的加载而执行,不管创建几个对象,都只执行一次。
    2)静态代码块优先于构造代码块的执行
    3)都定义在类中,一个带static关键字,一个不带static

    构造函数、非静态初始化块、静态代码块都是用于初始化,三者的执行顺序依次是:静态代码块>构造代码块>构造函数。
    其实初始化块就是构造器的补充,初始化块是不能接收任何参数的,定义的一些所有对象共有的属性、方法等内容时就可以用初始化块初始化了。

    静态初始化块的作用就是当JVM在装载类时,你想让它做一些事情,那么,就可以用静态初始化块。这几者的执行顺序是:

    (JVM在装载类时)先装载类的静态成员,再执行静态初始化块(同样,当一个类有继承自某类时,则会先装载该父类,那么,父类的装载或执行顺序,也都如句子所述)。

    (在创建类的实例时)先执行实例初始化块,再执行构造方法;但对于一棵继承树中,会先调用父类的构造方法,那么其执行顺序也如句子所述。


    查看全部
  • Java 中可以通过初始化块进行数据赋值。如:

    在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

    需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

    我们来看一段代码:

    运行结果:

    通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。


    查看全部
  • 需要注意:

    1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:

    如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:

    2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示:

    3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:


    查看全部
  • 内部类的主要作用如下:

    1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类

    2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据

    3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便

    内部类可分为以下几种:

    • 成员内部类

    • 静态内部类

    • 方法内部类

    • 匿名内部类


    查看全部
  • Object类是所有类的父类,如果一个类没有使用extends关键字明确标识继承另外一个类,那么这个类默认继承Object类。

    Object类中的方法适合所有子类。

    toString()方法:在Object类里面定义toString方法的时候返回的对象的哈希code码(对象地址字符串)

    可以通过重写toString()方法表示出对象的属性

    查看全部
  • super关键字:

    在对象的内部使用,可以代表父类对象

    1. 调用父类的属性:super.属性  2. 访问父类的方法:super.方法

    子类生成构造方法时系统默认生成隐式super调用父类无参方法,若父类中含有有参构造方法不含有无参构造方法,系统不会自动生成无参构造方法,在子类执行构造方法时会报错

    如果在子类中利用super关键字显式使用父类的构造方法时,必须将super关键字放在第一行

    若在子类中隐式引用父类构造方法,父类中必须要有无参构造方法,否则会报错

    查看全部
  • 封装的实现步骤

    查看全部
  • 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量

    查看全部
  • 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量

    查看全部
  • 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员

    查看全部
  • final关键字可以修饰类、方法、属性和变量

    final修饰类,则该类不允许被继承

    final修饰方法,则该方法不允许被覆盖(重写)

    查看全部
  • 继承的初始化顺序:

    1. 初始化父类再初始化子类

    2. 先执行初始化对象中属性,再执行构造方法中的初始化

    3. 属性中初始化的值比构造方法中初始化的值先执行

    4. 初始化顺序:父类属性初始化→父类构造方法初始化→子类属性初始化→子类构造方法初始化

    查看全部
  • 内部类的主要作用如下:

    1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类

    2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据

    3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便


    内部类可分为以下几种:

    1. 成员内部类

    2. 静态内部类

    3. 方法内部类

    4. 匿名内部类

    PS:内部内只能通过外部类的对象调用内部类的构造函数才能生成内部类实例。

    inner i= new outer().new inner();

    查看全部
  • UML概念

    统一建模语言或标准建模语言

    是一个支持模型化和软件系统开发的图形化语言 

    为软件开发的所有阶段提供模型化和可视化支持 

    用例图:

    用例图能够以可视化的方式,表达系统如何满足所收集的业务规则,以及特定的用户需求等信息

    查看全部
    0 采集 收起 来源:UML 简介

    2018-08-07

举报

0/150
提交
取消
课程须知
本课程是Java开发的基础,需要大家:掌握 Java 基本语法的使用。如果您是新手,建议先移步 《Java入门第一季》https://www.imooc.com/learn/85
老师告诉你能学到什么?
• 掌握 Java 编程思路 • 熟练运用面向对象程序设计思想
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!