java初学4

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、匿名内部类

时间: 2024-10-02 23:46:59

java初学4的相关文章

Java初学之华容道游戏

1 package hhuarongdao; 2 3 public class example { 4 public static void main(String args[]) 5 { 6 new Hua_Rong_Road(); 7 } 8 } 1 package hhuarongdao; 2 import java.awt.*; 3 import javax.swing.*; 4 5 import java.awt.event.*; 6 public class Hua_Rong_Roa

java初学打印星星以及九九乘法表

Java中打印星星,就是为了让初学者熟悉和掌握循环的使用方法: 给定一个图形如: * *** ***** ******* 第一种方式:由循环输出各个部分,再结合起来 for(int i=1;i<=4;i++){< p=""> for(int j=1;j<=7-i;j++){< p=""> system.out.print(" "); } for(int j=1;j<=2*i-1;j++){< p=&

sqlite - java 初学

进来准备使用一种embedded database,即嵌入式数据库,方便随项目本地存储.目前学习打算是sqlite和H2. document:http://www.runoob.com/sqlite/sqlite-java.html 1.连接数据库 添加依赖jdbc: <dependency> <groupId>org.xerial</groupId> <artifactId>sqlite-jdbc</artifactId> <versio

java 初学之面向对象设计 三角形,圆等设计

首先要对面向对象有一定了解,下面利用继承与派生的方式来演示java的面向对象过程: 创建一个java工程,添加一个新的pakage:Shapec; 添加一个新类,写入代码 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Shapec; /** * * @author Administrator */ //抽象类,图形借口 public

java初学的分析

第一阶段:入门阶段 学习目标:简单项目开发 学习内容: 1.Java入门书籍,Java基础知识.关于Java入门级的书,给大家推荐过<Java编程思想>.<Java核心技术:卷I基础知识>都是经典书目. 2.代码规范.Java服务端遵循的是Oracle的Java语言编码规范,在编写代码之前,要先熟悉. 3.开发流程.了解开发流程的重要性就像是女生化妆的时候使用水.BB霜和散粉先后顺序的重要性一样,一定不能错,而且必须要熟悉每一个环节. 4.开发工具.对于入门者来说,首先建议你安装J

Java 初学记录之可执行jar包

环境 jdk7 jre7 当我用jdk7开发的时候,编写完成可执行的jar工具,并且成功使用. 当我在另一台机器安装了jre6,再次运行我的小工具jar 的时候,报错 解决: http://stackoverflow.com/questions/10382929/how-to-fix-unsupported-major-minor-version-51-0-error 重新安装jre7 就可以正常打开了. jre7 的下载地址: http://download.oracle.com/otn/ja

Java 初学 第一弹--编译并运行书上的简单程序(猜数字小游戏)

(博主原创) 首先说明一下,博主是大一上学期结束寒假时自己看的Java,然后我看的是Head First Java的中文版,因为大一学了c,所以里面的一些基本思想还是了解的,在看这本书时就浏览了一下(就是那种光看没有自己动手去敲代码的),然后看到书上的一个猜数字小游戏,就想手动敲一下,熟悉熟悉Java的语法,但是真正去做时,发现比看起来要困难一些. 首先是Java在建立一个源码文件之前要先建一个package,然后我用的Eclipse写的Java(感觉和pycharm风格差不多),再新建一个文件

java初学一

1.区分大小写 public static void main String args[]  是类体中的一个方法,之后的两个大括号以及之间的内容叫做方法体,一个java应用程序中必须有一个类且只有一个类含有这样的main方法,这个类称为应用程序的主类, public static 和void分别是对main方法的说明. String args[]声明一个字符串类型的数组args[]注意String的第一个字母是大写的, 2.编译 javac Hello.java 3 .java  Hello 4

java初学

1.Java主要技术和分支以及应用领域 (1)Java SE Java Platform,Standard Edition,Java SE 以前称为J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的Java 应用程序,能为Java EE提供开发基础. (2)Java EE Java Platform,Enterprise Edition,以前称为J2EE.可帮助开发和部署可移植.健壮.可伸缩且安全的服务器端 Java 应用程序.Java EE 是在Java SE 的基础上构建