Java笔记
super
引用父类成员变量、局部变量、方法
例如:super.变量名,super.方法名,super.父类的构造方法;
super() 表示调用父类的构造函数
this
引用该类成员变量、局部变量、方法
例如:this.变量名,this.方法名,this.父类的构造方法;
final与static:
final:
修饰 成员变量:表示常量,只能被赋值一次(可以先声明而不给初值,这种变量也称为final空白,但使用前必须被初始化)
修饰 成员方法:不能被子类override,但可以被继承使用(final不能修饰构造方法;private修饰的方法默认也是final的)
修饰 类:不能被继承,该类没有子类(final类的成员方法默认为final的)
static:
修饰 成员变量:独立于该类的任何对象,被类的所有对象/实例共享,通过类名访问(static对象可以在其任何对象创建前访问;生成实例时不产生static变量的副本)
修饰 成员方法:独立于该类的任何对象,被类的所有对象/实例共享,通过类名访问(static对象可以在其任何对象创建前访问;生成实例时不产生static变量的副本)
修饰 类:只能修饰内部类,不能修饰外部类。修饰内部类时可以直接作为一个普通类使用,详见参考链接。
注:static修饰的成员方法只能调用static修饰的(静态的)类、成员变量(需要先实例化)、成员方法
static和final一起使用:
可以理解为全局常量,通过类名访问
注意:被static和final修饰的实例常量,实例本身不能改变,但对于一些容器类型的实例变量(如ArrayList、Hashmap)的实例变量,不能改变容器变量本身,但可以改变容器中存放的对象。
abstract:
修饰 成员方法:表抽象方法,在该类中不能具体实现,在子类(非抽象)中必须具体实现
修饰 类:表抽象类,抽象类不能实例化,只能被继承
抽象类:至少包含一个抽象方法,成员变量可以是普通变量
interface(接口):
成员变量:只能有static final的成员变量,不用static final修饰,也会隐式地声明为static final。
成员方法:不用abstract修饰,接口中的成员方法都默认是抽象方法
内部类:
内部类:定义在一个类里或一个方法里的类。
一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。
成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员)
同名成员的访问:
默认情况下访问的是成员内部类的成员
访问外部类的同名成员:外部类.this.成员变量(方法)
外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问
创建内部类对象:
Outter outter = new Outter(); //必须通过Outter对象来创建
Outter.Inner inner = outter.new Inner(); 或 Outter.Inner inner = outter.getInnerInstance();
外部类只能被public和包访问(默认)2种权限修饰,内部类有private访问权限、protected访问权限、public访问权限、包访问权限(默认)4种
(内部类详解未完待续。。。)
线程相关:
Thread
Runnable
enum 枚举:
例子:
public class EnumDemo { public static void main(String[] args){ //直接引用 Day day =Day.MONDAY; } } //定义枚举类型 enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
其中Day的类型都是 java.lang.Enum 类的子类(java.lang.Enum 是一个抽象类)
Map (相当于python里的字典):
import java.util.*; public class CollectionsDemo { public static void main(String[] args) { Map m1 = new HashMap(); m1.put("Zara", "8"); m1.put("Mahnaz", "31"); m1.put("Ayan", "12"); m1.put("Daisy", "14"); System.out.println(); System.out.println(" Map Elements"); System.out.print("\t" + m1); } }
需要 import java.util.Map 和 import java.util.HashMap
参考:
- 继承:https://blog.csdn.net/weixin_39938767/article/details/80056922
- final和static,讲得很详细:https://blog.csdn.net/hust_yfang/article/details/79585696
- static修饰类:https://www.cnblogs.com/a8457013/p/8078826.html
- 内部类:https://www.cnblogs.com/dolphin0520/p/3811445.html
- enum:https://blog.csdn.net/javazejian/article/details/71333103
- Map:http://www.runoob.com/java/java-map-interface.html