一、this
1、定义:this是一个关键字,存储了当前对象的内存地址。
- this对象,用来访问本类自己的属性和方法。
- 构造器中,给属性set值。
2、使用本类的属性 ,this.属性名, this可以省略不写。
3、 调用本类的方法 this.方法名() ,this可以省略不写。
4、 调用本类的构造方法, 要求必须是构造方法中的第一句代码:
- this()调用本类的无参构造方法;
- this(实参列表)调用本类的带参构造方法。
5、当局部变量与成员变量名称相同时,this代表成员变量。
详解见链接:https://www.cnblogs.com/vole/p/11866053.html
二、continue
跳出本次循环继续下一次循环;
三、break
跳出循环体,继续执行循环外的函数体;在switch...case中终止与下一个case的比较;
四、return: 跳出整个函数体,函数体后面的部分不再执行。
五、final
1、修饰类
final修饰的类不能被继承,其中的属性可以自由定义类型,但是其中的方法默认被final,不能修改。(除非真的不想其被继承,出于安全问题,一般不设置为final);
2、修饰方法
如果只有在想明确禁止该方法在子类中被覆盖的情况下才将方法设置为final的。
3、修饰属性
基本数据类型:值不能被修改,固定值。
引用数据类型:在栈内存中的存储的地址不变。
对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。如果对象用final修饰,可以改变其属性值。
4、为什么要将某个方法声明为final呢?(参考java编程思想)
正如前一章提到的那样,它可以防止其他人覆盖该方法。但更重要的一点或许是:这样做可以有效地“关闭”动态绑定,或者说,告诉编译器不需要对其进行动态绑定。这样,编译器就可以为final方法调用生成更有效的代码。然而,大多数情况下,这样做对程序的整体性能不会有什么改观。所以,最好根据设计来决定是否使用final,而不是出干试图提髙性能的目的来使用final。
六、static
1、方便在没有创建对象的情况下来进行调用(方法/变量)
2、加上该关键字就为静态的方法或静态的类;不加static的为成员变量,实例变量;
3、为什么 static方法,无法使用非static 的属性或方法?
答:因为static修饰的方法或成员方法,是在类加载到内存时,一同加载进来的非static的属性或方法是在创建对象时加载到内存的。
4、很多时候会容易把static和final关键字混淆,static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变。
关键词及内部类可以参看链接:https://www.cnblogs.com/dolphin0520/p/3736238.html。海子博文中解释的比较详细。
七、abstract
抽象类中可以编写构造方法,它的构造方法是为了给子类提供调用的了,目的是创建子类对象。
各子类共有的方法,但是各子类中有各自不同的实现时,需要将方法声明为抽象方法。
八、super
1、super只是一个关键字,这个关键字,只能出现在子类中,代表父类对象。
2、使用父类的非private属性 super.属性名。
3、使用父类的非private方法 super.方法名()。
4、调用父类的构造方法 super(), super(实参列表),必须是子类构造方法中第一句代码。
5、创建子类对象时,一定会调用父类的构造方法,如果不指定,默认调用父类的无参构造方法,相当于super()省略不写了。
- 注意:可以知道,super就是子类和父类的一个连接的纽带,且创建子类对象,必然调用父类的构造方法。
- 思考:子类可以不调用父类的构造方法吗?默认子类的构造方法必须调用父类的构造方法吗?是的,必定会调用。
6、当父类提供的方法,不能满足子类的需求的时候,子类可以重写父类的方法;子类重写的父类方法访问权限必须大于等于父类方法的访问权限(如果父类中的方法是private 的,那么子类是不能继承的)。
7、父类中有属性,有方法,构造方法,静态方法?子类可以继承什么呢?
答:子类可以继承父类非私有的属性,非私有方法。
8、构造方法不可以被子类继承,也不可以被子类重写,但是可以被子类调用,使用super关键字调用。
9、父类的静态方法,是不能被子类继承的,也不可以被子类重写。
10、一个类没有显示继承另外的一个类,那么这个类就继承Object类。