final关键字:
-
一旦被它修饰的变量,成为了常量,无法改变
Public static final int a=10; -
一旦被它修饰的方法,该方法就无法被重写
-
一旦某个类被final修饰,该类就断子绝孙,无法被继承;
Final class 类名称:
利用final关键字的目的:
基于底层的安全考虑,为了防止篡改底层代码,导致串码。
提高代码的利用率。
内部类:
当内部类在外部类成员位置上的时候,内部类就是外部类的成员之一
定义在某个类内部的类,它可以直接访问外界无法访问的私有成员变量
什么时候使用内部类:
在描述事物,若一个事物内部还包含其他可能包含的事物,比如在描述汽车时,汽车中还包含这发动机这个事物,这时发动机就可以使用内部类来描述。即就是内部事物必须寄宿在外部事物内部。
内部类访问规则:
内部类可以直接访问外部类中的成员,但外部类不能直接访问内部类,若要访问,必须创建内部类对象才能访问
非静态非私有内部类
当内部类在外部类成员位置上的时候,内部类就是外部类成员的一份子。这时这个内部类就可以使用成员修饰符修饰,比如public、static、private
如果内部类的权限是非私有的,就可以在外部类以外的其他类中访问。即可以通过创建外部类对完成访问内部类。
静态的非私有内部类
当内部类在外部类成员位置上被static修饰时,由于静态可以直接使用类名调用,则创建内部类对象的方式:
访问静态内部类的静态成员
由于内部类是静态的,可以直接使用外部类名调用内部类,而内部类的成员也是静态的,这时同样可以通过类名调用内部类的静态成员。
使用static修饰内部类,该内部类属于其外部类,而不属于外部类的对象;静态内部类可包括静态成员也可包括非静态成员。根据静态成员不能访问非静态成员的规定,所以静态内部类不能访问外部类实例成员,只能访问外部类的静态成员。
非静态内部类细节
注意非静态内部类中不能定义静态成员变量和静态成员函数。但可以定义静态成员常量。原因常量在生成字节码文件时直接就替换成对应的数字。当内部类在外部类成员位置上被私有修饰,在外部类意外的其他地方是无法访问的。只能在外部类中访问
静态内部类只是相对于外部类来说的,静态内部类的内部还是可以正常定义静态/非静态对象和方法。
多态:
在继承的基础上,父类引用指向子类实例
Public class Animal{
Public void say( ){
System.out.println("我是一只猫");
}
}
Public calss Cat extends Animal{
Public void sayhello( ){
System.out.println(“这是猫的方法”);}
Public void say( ){
//重写方法
System.out.println("我是一只猫");
}
}
Public class Test{
public static void main(String[ ] args){
//创建一个动物类,只能调用动物的方法
Animal animal = new Animal( );
animal .say( );
//创建一个Cat类,可以调用自身方法,也能调用父类方法
Cat cat = new Cat( );
cat.say( );
cat.sayhello( );
//如果使用多态创建的猫类,父类引用,父类引用无法访问到子类自身定义的方法,但父类引用可以直接操作子类的重写方法。
Animal cat1 = new Cat( );【把创建的Cat实例对象,赋给了Animal类,放大类别,详细化功能,因为子类可能存在新功能】
cat1 .say( );只能调到say( ),不能调用sayhello( );默认为父类型类型,用父类代指子类,访问不到子类自己的方法。
可以通过父类方法重写,调用子类方法。
例如:人类给不同动物治病,