-
在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。
需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
我们来看一段代码:
运行结果:
通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。
查看全部 -
与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。静态方法的使用如:
需要注意:
1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:
如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:
2、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示:
3、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:
查看全部 -
Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用类名直接访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问~~
使用 static 可以修饰变量、方法和代码块。
本小节,我们先认识一下静态变量。
例如,我们在类中定义了一个 静态变量 hobby ,操作代码如下所示:
要注意哦:静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收
查看全部 -
构造放法是用于初始化对象的方法
构造方法与类名相同且没有返回值
没有指定构造方法时系统会自动添加一个无参的构造方法
有指定的构造方法是,无论是有参还是无参,都不会再自动添加无参的构造方法
构造方法的重载与一般方法一样
构造方法可以实现给属性赋一个合理的值(用if语句在有参方法中实现)
查看全部 -
成员变量:在类中定义,用于描述对象要有什么
局部变量:在类的方法中定义,在方法中临时保存
成员变量可以被本类中的所有方法使用,局部变量只能被本方法使用
成员变量会被赋予初始值,局部变量不能被赋予初始值
不同方法中可以有同名的局部变量
二者重名时,优先使用局部变量的值
查看全部 -
静态内部类是 static 修饰的内部类,特点是:
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
查看全部 -
1、 内部 类定义在 外部 类的内部,相当于外部类的一个成员变量的位置,内部类可以使用任意访问控制符,如 public 、 protected 、 private 等
2、 内部类中定义的方法可以直接访问外部类中的数据,而不受访问控制符的影响,如直接访问外部类中的私有属性
3、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
4、 编译上面的程序后,会发现产生了两个 .class 文件
其中,第二个是外部类的 .class 文件,第一个是内部类的 .class 文件,即成员内部类的 .class 文件总是这样:外部类名$内部类名.class
注:1、 外部类不能直接使用内部类的成员和方法
可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。
2、 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。如:
查看全部 -
内部类的主要作用如下:
1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
内部类可分为以下几种:
成员内部类
静态内部类
方法内部类
匿名内部类
查看全部 -
this关键字:
1.this关键字代表当前对象
this.属性 操作当前属性的方法
this.方法 调用当前对象的方法
2.封装对象的属性时,常使用this关键字
*访问private属性,要使用setter/getter方法
*source——generate setter and getter生成方法
查看全部 -
可访问等级:pulic>protected>默认>private
查看全部 -
类:类是对象的 类型,具有相同的属性和方法的一组对象的集合
对象的属性:对象具有的各种特征,每个对象的每个属性都有其特定值
对象的方法:对象执行的操作
二者关系:类是抽象的模板,对象是具体的实体
查看全部 -
接口制定了规定,但不管继承者如何实现
查看全部 -
使用接口:
接口在使用时,经常会与匿名内部类配合使用;
匿名内部类:没有名字的内部类
语法格式:
interface i=new interface(){
public void 方法名(){
输出语句
}
};!!!
查看全部 -
1、接口和类定义不同,定义接口不需要使用class关键字,而是使用interface关键字。
2、使用接口时,只能使用publIC修饰符,不能使用private以及protect,因为接口通常是用来被继承和被实现的!
3、定义接口以及接口的抽象方法时需要有abstract,而如果不加的话,系统会自动帮我们生成abstract。
4、接口可以继承多个副接口,当然可以继承也可以不继承。
5、接口中定义的变量都是常量,所以用public static final修饰;
6、使用接口可以使用implements实现
7、如果要继承父类,则继承父类必须在实现接口之前!!即:
class 类名 extends 父类 implements 【接口1,接口2,......】
查看全部 -
定义包:package 包名
注:必须放在java源程序的第一行
包间名可以使用 . 号隔开
eg:com.imooc.Myclass
**(通过包名区分相同的类名)
系统中的包:
java.(功能).(类)
java.lang.(类) 包含java语言基础的类
java.util.(类) 包含java语言中各种工具类
java.io.(类) 包含输入、输出相关功能的类
**** *包的命名规范是全小写字母拼写
*子目录.* (加载该目录下的所有文 件)
查看全部
举报