java基础近期学习的内容总结1。

    xiaoxiao2022-07-07  197

    内部类的同名变量的访问

    // 如果出现了重名的现象,那么格式是外部类名称.this.外部类成员变量名 public class Outer{ int num=10;//外部类的变量 public class Inner{ int num=20; public void methodInner(){ int num=30; System.out.println(num);//局部变量就近原则,30 System.out.println(this.num);//内部类的成员变量,20 System.out.println(Outer.this.num);//外部类的成员变量,10 } } }

    总的来说就是就近原则,然后就是看看是哪个this指定了该变量名。

    类的权限修饰符

    一共有四种,public > protected > (default) > private。 外部类:public 、 (default) 成员内部类:四种修饰符都可以使用。 方法内部类:四种修饰符都不可以使用,方法内部类只能给当前方法使用。

    局部(方法)内部类的final问题

    在局部(方法)内部类中,如果希望访问到所在方法的局部变量,那么这个局部变量必须是有效的final变量。 在Java 8+版本开始,可以省略final关键字。 那么为什么一定要加final关键字呢? 原因是跟生命周期有关系。

    public class MyOuter{ public void methodOuter(){ int num=10;//所在方法的局部变量 class MyInner{ public void methodInner{ System.out.println(num); } } }

    在上述代码当中,int num=10实际上是int final num=10;只是因为JAVA8+以上的版本将其省略了,因为int num是保存在栈内存当中的,而当你使用这个方法是创建也就是new出来的对象是在堆当中的,由于栈是用完就退栈,所以内存空间很可能就保存不到10这个变量,所以要把它变成常量。不然很可能这个方法就找不到这个num了。

    匿名内部类的注意事项

    1.在创建对象的时候,只能使用唯一一次

    interfaceName obj=new interfaceName(){ method1(); method2(); } obj.method1(); obj.method2();

    2.使用匿名对象的话,只能调用唯一一次。 也就是在上方的代码直接new 然后在最后.方法名。 3.匿名内部类是省略了类名称,匿名对象是省略了对象名称。

    类作为成员变量类型

    String也是一个类。 比如说,先创建一个weapon类,在里面定义一个String类型代表weapon的名字,然后创建getter、setter方法和构造方法。然后再创建一个hero类,hero类定义一个public Weapon weapon;,这样在Demo类中使用hero类对象时,可以使用hero.setWeapon(new Weapon(“多兰剑”));

    接口作为成员变量

    一共有三种实现的方式: 1.实现接口的实现类。 2.实现匿名内部类接入。 3.使用匿名内部类的匿名对象接入。

    接口作为方法的参数或者返回值类型

    其实就是一种多态的写法。比如说ArrayList的用法。 List <S.tring> list=new ArrayList<>(); 左边是接口名称,右边是实现类名称。ArrayList 实现了List接口。

    最新回复(0)