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

本文主要内容
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几次对象就执行几次
静态代码块优先于非静态代码块执行,非静态代码块优先于构造方法执行
可用于给静态变量赋值,用来给类进行初始化。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容