总的来说就是就近原则,然后就是看看是哪个this指定了该变量名。
一共有四种,public > protected > (default) > private。 外部类:public 、 (default) 成员内部类:四种修饰符都可以使用。 方法内部类:四种修饰符都不可以使用,方法内部类只能给当前方法使用。
在局部(方法)内部类中,如果希望访问到所在方法的局部变量,那么这个局部变量必须是有效的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接口。
