美文网首页软件测试学习之路
Java学习笔记 10 - 构造方法、修饰符、内部类等

Java学习笔记 10 - 构造方法、修饰符、内部类等

作者: 乘风破浪的姐姐 | 来源:发表于2018-07-09 16:41 被阅读7次

本文主要内容
1、构造方法
2、this、super 、final 、static关键字
3、匿名对象、内部类、包、权限修饰符、代码块

01 构造方法

A、作用:在实例化对象同时对象属性初始化
B、格式:权限 类名(参数列表){}
C、注意事项
1、类中,如果没有构造函数,编译器会自动添加一个无参的构造函数。如果有,则不会自动添加。
2、new 对象时,即是在调用对象的构造方法。
3、同一个类可以有多个构造方法,构造方法以重载的形式展现
4、构造方法在创建对象的时候就执行了,而且只执行一次。一般方法是在对象创建后,需要使用时才被调用,可以被调用多次
5、构造方法没有返回值类型。也不需要写返回值。因为它是为构建对象的,对象创建完,方法就执行结束

02 this关键字

构造方法之间的调用,要使用this(参数),语法:this(参数列表)
1、this(参数)在一个构造方法中调用其他构造方法
2、this(参数)必须写在构造方法中的第一行
3、this关键字用来区别同名的成员变量与局部变量,用法:this.成员变量

03 super关键字

A、格式
调用本类中的构造方法:this(实参列表);
调用父类中的空参数构造方法:super();
调用父类中的有参数构造方法:super(实参列表);
B、注意事项
1、super()调用的是父类的空参数构造方法,进行父类成员的初始化
super(参数)调用的是父类的有参数构造方法,super.成员变量 调用的是父类的成员变量
2 、子类的构造方法中有一个默认的构造方法,在该构造方法中的第一行有一个隐式代码super();
目的是调用父类的构造方法,super代表父类在内存中存储的位置
3、子类中所有的构造方法,无论重载多少个,第一行必须是super()
4、如果父类有多个构造方法,子类中super()可以是父类任意一个构造方法。
5、构造方法不能继承,所以不能重写
6、super()必须是子类构造方法中的第一行
7、无论如何,子类的所有构造方法都要直接或间接的调用到父类的构造方法
8、this()、super()不能同时存在

子类中的构造方法为什么会有一句隐式的super()呢?
原因:子类会继承父类中的内容,所以子类在初始化时,必须先到父类中去执行父类的初始化动作。这样,才可以使用父类中的内容。当父类中没有空参数构造方法时,子类的构造方法必须有显示的super语句,指定要访问的父类有参数构造方法。

04 final 关键字

final修饰类不可以被继承,但是可以继承其他类
final class 子类类名 extends 父类类名{}
final修饰的方法不可以被覆盖,但父类中没有被final修饰方法,子类覆盖后可以加final
public final void 方法名(){}
final修饰的变量称为常量,这些变量只能赋值一次,需要在创建对象前赋值,否则报错
final int i = 20;
i = 30; //赋值报错,final修饰的变量只能赋值一次

05 static关键字

访问静态成员的格式
类名.静态成员变量名
类名.静态成员方法名(参数)
1、静态方法中不能调用非静态方法或变量,只能调用静态方法或变量
2、静态方法中不能使用this或super
3、非静态方法可以使用静态变量
4、当方法中没有使用非静态变量时,方法应该定义为静态方法。
当方法中只使用非静态变量时,方法应定义为非静态方法。
当方法中既没有使用静态和非静态变量时,方法应定义为静态方法。
5、静态方法或变量是在类创建过程中进行创建和初始化的,它的存在优先于非静态方法或变量。当类执行完成后,静态方法或变量才消亡。
6、接口中的每个成员变量都默认使用public static final修饰。
7、被static修饰的成员变量属于类,不属于这个类的某个对象
8、被static修饰的成员可以通过类名直接访问

06 匿名对象

1、匿名对象使用格式: new 类名()
2、匿名对象只能使用一次
3、匿名对象可以作为方法中的参数,也可以作为返回值

07 内部类

A、特点
1、调用方法中的内部类的方法,需要在方法中new内部类,然后调用内部类的方法。
2、匿名内部类方法的调用格式:new 内部类名称(){定义具体方法}.方法名;
3、接口的实现或类的继承,都可以通过 new 接口名或类名(){方法的重写};的方式创建对象。

B、内部类的分类
1、成员内部类
定义在外部类中的成员位置。与类中的成员变量相似,可通过外部类对象进行访问
定义格式
class 外部类 {
修饰符 class 内部类 {
//其他代码
}
}
访问方式: 外部类名.内部类名 变量名 = new 外部类名().new 内部类名();
2、局部内部类
定义在外部类方法中的局部位置。与访问方法中的局部变量相似,可通过调用方法进行访问.
定义格式
class 外部类 {
修饰符 返回值类型 方法名(参数) {
class 内部类 {
//其他代码
}
}
}
访问方式:在外部类方法中,创建内部类对象,进行访问

3、外部类、内部类、内部类方法中同时定义同一个变量时,内部类使用该变量时遵循就近原则。
内部类中的方法想要调用内部类中定义的变量,可以用: this.变量名称
内部类中的方法想要调用外部类中定义的变量,可以用: 外部类名.this.变量名称
4、内部类的定义位置可以在外部类定义变量的任意相同位置

08 包

类中包的声明格式: package 包名.包名.包名…;
在访问类时,为了能够找到该类,必须使用含有包名的类全名:包名.包名….类名,如: java.util.Scanner
导包的格式:import 包名.类名;

09 权限修饰符

public 所有包中的类都可以访问
protected 本包及子类可以访问,不同包的子类访问,只能在子类中访问,不能出类例如:在main方法中实例化子类对象通过实例化的对象去访问protected修饰的方法或变量,是不可以的。
default 本包内都可以访问,不同包的子类不能访问。
private 只能本类可以访问

10 代码块

A、以”{}”划定的代码区域 叫代码块,位置没有固定要求,可随意
B、分类: 局部代码块 构造代码块 静态代码块 同步代码块
1、局部代码块
以”{}”划定的代码区域,此时只需要关注作用域的不同即可
方法和类都是以代码块的方式划定边界的

2、构造代码块
构造代码块是定义在类中成员位置的代码块
优先于构造方法执行,构造代码块用于执行所有对象均需要的初始化动作
每创建一个对象均会执行一次构造代码块

3、静态代码块
定义在成员位置,使用static修饰的代码块。
静态代码块只执行一次,无论new几次对象。非静态代码块、构造方法,new几次对象就执行几次
静态代码块优先于非静态代码块执行,非静态代码块优先于构造方法执行
可用于给静态变量赋值,用来给类进行初始化。

相关文章

  • Java学习笔记 10 - 构造方法、修饰符、内部类等

    本文主要内容1、构造方法2、this、super 、final 、static关键字3、匿名对象、内部类、包、权限...

  • java面向对象之构造方法

    构造函数(构造方法、构造器、Constructor) 关于java类的构造函数 1、构造方法语法【修饰符列表】构造...

  • Java面向对象,权限修饰符,内部类

    day10笔记【Java面向对象,权限修饰符,内部类】 1_面向对象(package关键字的概述及作用)(了解) ...

  • JavaSE基础知识学习-----内部类

    内部类 类的五个成分:属性,方法,构造器,代码块,内部类。什么是内部类?在java中,允许一个类定义在另一个类的内...

  • 11.14

    java构造器 又称为 构造方法,constructor构造器用于构造该类的实例。 格式如下:[修饰符] 类名...

  • Java 中的方法内部类

    Java 中的方法内部类 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内...

  • Java基础语法:面向对象概述

    Java面向对象学习的三条主线: 1. Java类及类的成员:属性,方法,构造器;代码块,内部类 2. 面向对象的...

  • Java的访问修饰符

    Java中的访问修饰符定义了变量,方法,构造函数或类的可访问性(范围)。Java中有4种访问修饰符: Public...

  • Java中访问修饰符和构造函数的一点总结

    Java访问修饰符 Java用于类的修饰符(2个)和限定符(2个) 注意:内部类可以拥有更多的访问修饰符 Java...

  • DAY 07

    学习构造方法,this指针,super 语句,方法的重载,修饰符(public private protected...

网友评论

    本文标题:Java学习笔记 10 - 构造方法、修饰符、内部类等

    本文链接:https://www.haomeiwen.com/subject/bivkuftx.html