参考:https://blog.csdn.net/dlwh_123/article/details/41309187
abstract 规则:
1:抽象类可以没有抽象方法,但是有抽象方法的类必须定义为抽象类,如果一个子类继承一个抽象类,子类没有实现父类的所有抽象方法,那么子类也要定义为抽象类,否则的话编译会出错的。
2:抽象类没有构造方法,也没有抽象静态方法。但是可以有非抽象的构造方法
3:抽象类不能被实例化,但是可以创建一个引用变量,类型是一个抽象类,并让它引用非抽象类的子类的一个实例
4:不能用final 修饰符修饰
抽象方法必须在抽象类当中,也就是说,一个类只要有一个方法是抽象的,那么这个类就必须是抽象类
抽象类里面的方法不一定要抽象的,也可以全都不是抽象的
抽象类不能实例化!
所以可以想到,当你不想让你的类被别人实例化,只想这个类的子类可以实例化,那么只要将这个类声明为abstract的就可以了
(和final的情况蛮相近,当你不想让这个类再有子类化,只要在类的声明前面添加final即可)
内嵌机制:
java所说的内嵌机制是指final方法,即C里面我们常说的内联,inline方法。
内嵌机制就是代码在调用到这个方法时,这个方法自动展开,而不再是函数调用的形式。从而提高了函数运行效率。
内部类分为: 成员内部类、静态嵌套类、方法内部类、匿名内部类。
(1)、内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号。
(2)、内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。
(3)、内部类声明成静态的,就不能随便的访问外部类的成员变量,仍然是只能访问外部类的静态成员变量。
参考:https://blog.csdn.net/android_zx/article/details/77220534