你的位置:首页 > Java教程

[Java教程]JavaSE 复习_4 接口多态和内部类


△abstract不可以修饰成员变量
△一个类可以没有抽象方法,可以定义为抽象类,这样的目的是不能让其他类建立本类对象,交给子类完成.
△abstract和static(可以被类名调用方法,但是抽象方法调用没有意义)final(不能被覆盖方法)private(私有方法无法覆盖)
△接口只能被实现.被用接口去继承或者用类或者抽象类去实现
△接口中定义的变量全部是常量.关键修饰符为Public static final.接口中没有构造方法,实现接口的类构造方法访问的是object,接口中的方法是Public,因此实现需要注意一定是public
△接口可以没有需要实现的方法.
△接口与类是实现关系,接口与接口之间是继承关系,可以多继承.
△抽象类:被继承体现的是is a关系.定义了共性的功能
 接口是like a关系,定义的是扩展功能
△  javac-d<my_dir> Myprogram.java:就是将Myprogram.java程序里产生的  .class  文件放在 my_dir  目录里,用于生成类文件的包..可以javac -d .Myprogram.java.(当前路径下生成类文件的包)
△import导入*,代表代表通配符,它会在包下挨个匹配,找到后就导入.

访问权限:
            本类              同一包内的子类和无关类     不同包下的子类      不同包下的无关类
private      Y                        N                          N               N
default      Y                        Y                          N               N
protected    Y                        Y                          Y               N
public       Y                        Y                          Y               Y 
△内部类:
      Outer.Inner oi=new Outer().new Inner();
  内部类可以直接访问外部类的私有成员.
静态内部类:
     Outer.Inner oi=new Outer.Inner();
方法中的局部内部类访问局部变量局部变量必须要加final修饰.因为当调用这个方法的时候,局部变量如果没有被final所修饰的话,他的生命周期应当和方法的生命周期是一样的,方法弹栈的时候,局部变量将会消失,这时候如果局部内部类没有被回收走,想要去使用这个方法的时候,就会产生问题.
△匿名内部类只有重写单个方法的时候使用.
△当内部类是成员的时候,要再主函数中访问它,必须要加static
△当重写equals方法时,注意参数是Object,否则就不是重写而是重载了.
△equals与==的区别:equal只能对于引用数据类型进行比较,但是==号能对引用数据类型和基本数据类型都进行比较,equals底层依赖的就是==,一般需要重写equals方法.
△Scanner hasnextInt()判断接下来的数是否是整数,判断后,在调用nextInt():获取输入的整数,.标准格式如下:
 if(i.hasnextInt()) {
     int x=i.nextInt();
}
  当nextInt()和nextLine()作组合的时候,nextInt()在前面的时候,nextInt()获取整数后,不会再获取回车符,因此会被nextLine()所获取而得知该行已结束,因此不会再输出其他内容.
  解决方案1:创建两次Scanner对象2.都用nextLine()方法,随后在转换为整数.