码迷,mamicode.com
首页 > 编程语言 > 详细

java初学4

时间:2015-07-07 22:32:30      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:

1、interface接口

(1)[修饰符] interface 接口名 extends 父接口1,父接口2....
       •没有构造方法,不能实例化;
       •接口只能继承接口,不能继承类
       •接口里没有普通方法,方法全是抽象的;
       •接口里的方法默认修饰符是public abstract
       •接口里的字段全是全局常量,默认修饰符是public static final;
(2)接口里的成员包括(主要是前两个):
       •全局常量
       •公共的抽象方法
       •内部类(包括内部类,内部接口,内部枚举类);
使用接口
格式 : public class SubImpl  extends Super  implements IA,IB
 
•接口的实现必须在 extends 之后;
•实现接口的方法必须是 public 类型
•接口不能创建实例,但是可以声明引用类型的变量。
       •此时,引用类型的变量必须指向到其实现类对象。
       •IStudent s = new String();//
       •IStudent s = new StudentImpl();//
2、接口和抽象类异同点
(1)相同点:
       •都位于继承的顶端,用于被其他实现或继承;
       •都不能实例化;
       •都包含抽象方法,其子类都必须覆写这些抽象方法;
(2)区别:
       •抽象类为部分方法提供实现,避免子类重复实现这些方法,提供代码重用性;接口只能包含抽象方法;
       •一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)
(3)二者的选用:
       •优先选用接口,尽量少用抽象类;
       •需要定义子类的行为,又要为子类提供共性功能时才选用抽象类;
技术分享
3、内部类
(1)类中有类
       •内部类:嵌套类
       •外部类:宿主类
(2)把内部类隐藏在外部类之内,不许同包的其他类访问该类;
(3)内部类可以访问外部类的私有数据,外部类不能访问内部类的实现细节,比如字段;
(4)观察编译后的字节码文件
(5)非静态内部类静态内部类,局部内部类;
(6)匿名内部类适合于仅使用一次使用的类;
A、非静态内部类
     Ø若外部类字段,内部类字段,内部类方法变量同名,则其访问方式分别是:
        •访问外部类的字段:外部类类名.this.字段
        •访问内部类字段:this.字段
        •访问内部类方法的局部变量:字段
非静态内部类例子:
技术分享
打印结果:
             把局部变量添加到尾巴
             把内部类属性添加到尾巴
             把外部类属性添加到尾巴
在外部类以外访问非静态内部类
(1)内部类不能是private修饰,否则不能访问
(2)外部类以外的地方定义内部类变量
       •OuterClass.InnerClass varName ;
(3)非静态内部类对象是存放在外部类的对象里的,因此在创建非静态内部类对象之前,必须先创建其外部类的对象
       •OuterInstance.new InnerClass([参数列表]);
public class InnerDemo {
    public static void main(String[] args) {
        //Outer.Inner in = new Outer().new Inner();
        Outer.Inner in;
        Outer out = new Outer();
        in = out.new Inner();
        //in.inShow();
        //Outer out = new Outer();
        //out.outShow();
    }
}

class Outer {
    class Inner {
        public void inShow() {
            System.out.println("inShow");
        }
    }
    public void outShow(){
        //System.out.println("outShow");
        Inner in = new Inner();
        in.inShow();
    }
}
在外部类以外访问非静态内部类例子
技术分享
B、静态内部类
 
 
C、局部内部类
 
 
D、匿名内部类
 
 
 

java初学4

标签:

原文地址:http://www.cnblogs.com/MrZivChu/p/startstudyjava4.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!