-
抽象方法只能在抽象类中,不能使用static和private修饰符,一般不提供具体实现,继承类只有实现了抽象类的所有抽象方法才能实例化
-
权限修饰符
- 默认的修饰符权限:不同包的类或者不同包的子类都不可见,其他的类都可见
- protected修饰符:不同包的类不可见,同包或不同包的子类都可见
-
static final 静态常量,多个类示例共享
-
值传递,传递的参数是按照值的备份进行传递的;引用传递,传递的是引用
-
可以实现多个接口,但只能继承一个抽象类;抽象类可以提供成员的实现细节,而接口不能;可以再以后的版本中随意为抽象类添加成员(非抽象方法),而接口不能;
- 抽象类中的非抽象方法,子类可以不必重载
-
子类不能重写父类的final或static方法;子类必须重写父类中的abstract方法或者也声明为abstract方法;子类重写父类方法时,方法声明必须和父类一样
-
如果需要克隆的对象中包含引用类型,则需要使用深克隆;否则,使用浅克隆
- 深克隆:采用序列化的实现;依次克隆各个可变的引用类型域
-
内部类
- 如果要在外部类的非静态方法之外的任意位置创建某个内部类的对象,那么必须指明创建对象的类型:OuterClassName.InnerClassName
- 如果需要在内部类中生成外部对象的引用,需要return OuterClassName.this;
- 外部类引用对象可以直接创建内部类对象:outer.new Inner();
- 普通的内部类对象隐式地保存了一个引用,指向创建它的外部类对象,但是当使用static关键字修饰内部类时,这时内部类一般称为嵌套类,这就意味着:创建内部类对象不需要其外部类对象;不能从嵌套类的对象访问非静态的外部对象
- 内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。
- 内部类不能用普通的方式访问。
- 内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 。
- 外部类不能直接访问内部类的的成员,但可以通过内部类对象来访问
网友评论