final
final:最终的,不可变的
final的特点
1.被final修饰的类不可被继承
2.被final修饰的方法,子类不能重写他
3.被final修饰的局部、成员变量只能被赋值一次,不论什么时候去赋值他,只能被赋值一次,剩下的赋值全都失效
4.final指的是该引用变量中的保存地址值不能改变,而不是地址值指向的内容不能改变
static
static:静态的
static的特点
1.静态的成员不属于任何对象,属于这个类
2.静态的成员直接通过类名就可以使用,虽然也可以通过对象名使用,但是不建议这么使用
static的格式:
对象名.static 成员变量/方法名()
public class 类名{
static int age;
public static void show(){
}
}
内部类
内部类:一个类中定义了另一个类,这另一个类就是内部类。
内部类包含:成员内部类和局部内部类
成员内部类:
内部类定义在外部类的类中方法外
成员内部类对象的创建:
外部类名.内部类名 对象名 = new 外部类名().new 内部类名();
成员内部类的特点:
无条件访问外部类中任何成员
局部内部类:
内部类定义在外部类的类中方法中
匿名内部类:
(因为这个很重要,并且大神都喜欢用匿名内部类,所以加重了)
匿名内部类:
可以理解为一种语法糖,语法的简便格式,但是原理不变。
语法糖(Syntactic sugar):
也译为糖衣语法,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
//1.定义接口
public interface USBInterface {
void open();
void close();
}
public class NiMingDemo {
public static void main(String[] args) {
//使用匿名内部类
USBInterface dd = new USBInterface(){
@Override
public void open() {
System.out.println("鼠标启动了");
}
@Override
public void close() {
System.out.println("鼠标关闭了");
}
};
dd.open();
dd.close();
}
}
//2.定义抽象类
public abstract class Animal {
public abstract void eat();
public abstract void catch();
}
public class NiMingDemo {
public static void main(String[] args) {
//使用匿名内部类
Animal cc = new Animal(){
@Override
public void eat() {
System.out.println("猫吃鱼");
}
@Override
public void catch() {
System.out.println("猫抓老鼠");
}
};
//调用方法
cc.eat();
cc.catch();
}```