接口的使用,内部类

接口的使用:

接口定义好后,如何使用这些接口呢?只要在类的声明语句中使用关键字implements,声明该类实现了某个或多个接口,同时要在类中实现接口中定义的所有方法。具体格式如下:

[类修饰符]class类名 implements多个接口

{

实现接口中的方法

}

在类体中实现接口中的方法必须是公有public方法,如果不加public,程序会出错。我们对上面定义的接口写出具体的实现,程序如下:

Class A implements Son

{

public void fn1()

{

System.out.println(“fn1 ok”);

}

public void fn2(){

}

Public void fn3()

{

}

public void fn5()

{}

Public void fn4()

{}

}

接口的用法:定义一个接口图形类,派出3个子类:三角形类,矩形类,圆形类,求面积.。

package com.extend;

public class Test1{

public static void main(String []args){

Recte rect=new Recte(3,4);

rect,area();

Anglex ang=newAnglex(3,4);

ang,area()

Circlex cir=new Circlex(5)

Cir,area();

}

}

Interface Shape{

public final double PI=3.1415;

public abstract void area();

}

class Recte implements Shape{

private int1.w;

Recte(int a1,int b1){

this.1=a1

this.w=b1

}

public void area(){

double s;

s=1*w;

System.out.println(“矩形的面积为:”+s);

}

}

class Anglex implements Shape{

private int 1,h

Anglex(int11,int h1){

this.1=11;

this.h=h1;

}

Public void area(){

double s;

s=0.5*1*h;

System.out.println(三角形的面积为:”+s);

}

}

class Circlex implements Shape{

private int r;

Circlex(int r1){

this.r=r1;

}

public void area(){

double s;

s=PI*r*r;

System.out.println(“圆形的面积为:”+s);

}

}

ps:继承抽象类:优势为抽象类中方法不需要全部实现,缺陷为单继承系。

实现接口:缺陷为接口中的方法必须全部实现,优势为多继承系。

在我们写程序的时候,可以将接口保存成一个文件,类保存成一个文件。

内部类和匿名类:

简单地说,内部(inner)类是指那些定义代码被置于其他定义中的类;而对于一般的类定义代码不嵌套在其他类定义中的类,称为顶层(top-level)类。对于一个内部类来讲,包含其定义代码的类称为它的外部(outer)类。

匿名类,顾名思义就是没有名字的类。并不是所有的类都可以是匿名类,只有内部类才可以是匿名类。也就是说,我们在定义内部类时,可以不给内部类起名字,称为匿名内部类,简称匿名类。

内部类:

在一个类的内部定义另外一个类,这个类就叫做内部类(inner class)。内部类的定义和普通类的定义没什么区别,它可以直接访问和引用它的外部类的所有变量和方法(包括private),就像外部类中的其他非static成员的功能一样。区别是,外部类只能声明为public和default,而内部类可以声明为private和protected。

当我们建立一个内部类时,其对象就拥有了与外部类对象之间的一种关系,当内部类的成员方法访问某个变量/方法时,如果在该方法和和内部类中都没有定义过这个变量,词用就会被传递给内部类中保存的那个外部类对象的引用,通过那个外部类对象的引用去调用这个变量。

内部类:

public class Test2{

public static void main(String []args){

//Inner in=new Inner();错误

Outer out=new Outer();

Out.outMethod();

}

}

Class Outer

{

int s=10;

void outMethod()

{

Inner i=new Inner();;

i.inMethod();

}

class Inner

{

int t;

void inMethod()

{

t=20;

s++;

System.out.println(s+t);

}

}

}

在该程序中,在类Outer的内部包含了类Inner的定义,这时Outer类称为外部类,Inner类称为内部类。在外部类Outer的里面,可以对内部类进行任何访问,在outMethod()方法中就创建了内部类的对象,调用了内部类中的inMethod()方法。在内部类中,可以访问在外部类中定义的各种成员,例如在inMethod()方法中使用了外部类中定义的成员变量s。而在类的外部,主类中,不能对内部类直接进行访问,“Inner in=new Inner();”这条语句是错误的。我们只能创建Outer类的对象,通过外部类的成员方法对内部类进行操作。

时间: 2024-08-27 19:58:48

接口的使用,内部类的相关文章

【java基础】内部类,局部内部类,匿名内部类、静态内部类、接口中的内部类

内部类: 1.定义在一个类中的内部类,内部类的实例化伴随着外围类所定义的方法来构造,内部类对象有外围类的隐式引用,所以内部类可以直接访问外围类的外围类的域,包括私有的,这是内部类的访问特权,所以比常规类功能更加强大. 2.内部类可以对同一个包中的其他类隐藏起来,不过可以通过 OuterClass.InnerClass来引用public声明的内部类. 局部内部类: 1.内部类挪到方法内部,与内部类相比,局部内部类不仅可以访问定义他们的外部类,还可以并且仅可以访问声明为final的局部变量. 2.类

接口中的内部类

在接口中实现内部类可以使该接口的所有实现所共用. public interface BaseInter { public void f1(); public void f2(); class BaseImp implements BaseInter{ @Override public void f1() { System.out.println("Base.f1()"); } @Override public void f2() { System.out.println("B

Java复习_4 接口多态和内部类

△abstract不可以修饰成员变量 △一个类可以没有抽象方法,可以定义为抽象类,这样的目的是不能让其他类建立本类对象,交给子类完成. △abstract和static(可以被类名调用方法,但是抽象方法调用没有意义)final(不能被覆盖方法)private(私有方法无法覆盖) △接口只能被实现.被用接口去继承或者用类或者抽象类去实现 △接口中定义的变量全部是常量.关键修饰符为Public static final.接口中没有构造方法,实现接口的类构造方法访问的是object,接口中的方法是Pu

Java自学-接口与继承 内部类

Java 内部类 内部类分为四种: 非静态内部类 静态内部类 匿名类 本地类 步骤 1 : 非静态内部类 非静态内部类 BattleScore "战斗成绩" 非静态内部类可以直接在一个类里面定义 比如: 战斗成绩只有在一个英雄对象存在的时候才有意义 所以实例化BattleScore 的时候,必须建立在一个存在的英雄的基础上 语法: new 外部类().new 内部类() 作为Hero的非静态内部类,是可以直接访问外部类的private实例属性name的 package characto

java 核心技术卷一笔记 6 .1接口 lambda 表达式 内部类

6.1 接口不是类,是对类的一组需求的描述,这些类需要遵守接口描述的统一格式进行定义.例如:Arrays类中sort方法(可以对对象数组进行排序)前提是对象所属的类必须实现了Comparable 接口. public interface Comparable { int compareTo(Object other) } Comparable public interface Comparable<T> { int compareTo(T other) } Comparable泛型 接口的方法

java 核心技术卷一笔记 6 .2接口 lambda 表达式 内部类

6.2 接口实例 6.2.1 接口与回调 在java.swing包中有一个Timer类,可以使用它在到达给定的时间间隔时发出通告,假如程序中有一个时钟,就可以请求每秒钟获得一个通告,以便更新时钟的表盘. 在构造定时器时,需要设置一个时间间隔,并告知定时器,当到达时间间隔时需要做些什么操作,(java将某个类的对象传递给定时器,然后的定时器调用这个对象的方法.)-----定时器需要知道调用了哪一个方法,并要求传递的对象所属的的类实现了java.awt.event包的ActionListener接口

黑马程序员——JAVA学习笔记四(继承、接口、内部类)

1,    通过extends关键字让类与类之间产生继承关系.多个类中存在相同属性和行为时,将这些内容抽取到单独的一个类中,那么多个类无需定义这些属性和行为,只要继承那个类即可,已存在的类叫做超类,基类,或父类.新类称为子类,派生类,孩子类. 子类可以直接访问父类中的非私有的属性和行为.子类无法继承父类中私有的内容.JAVA不支持多继承,只支持单继承,多实现. 继承提高了代码复用性,让类与类之间产生了关系.为多态提供了前提. 2,    super关键字代表父类中成员变量内存空间的标示.两个作用

[Java学习笔记] Java核心技术 卷1 第六章 接口与内部类

第6章 接口与内部类 6.1 接口 一个类可以实现一个或多个接口,并在需要接口的地方,随时使用实现了相应接口的对象. 在接口声明中,方法自动public,可以不写修饰符.在实现接口时必须把方法声明为public. 一个接口中可以包含多个方法,还可以定义常量,自动设置public static final 声明在接口中的内部类自动成为static和public类. 接口中不能含有实例域,也不能在接口中实现方法.提供实例域和方法实现的任务应该由实现接口的那个类来完成. 可以将接口看成是没有实例域的抽

Java核心技术 第六章 接口和内部类

Java核心技术  第六章  接口与内部类 接口: 任何实现Comparable接口的类都需要包含compareTo方法,并且这个方法的参数必须是一个Object对象,返回一个整数数值. 在Java SE 5.0中,Comparable接口已经改进为泛型类型. 接口中所有的方法自动的属于public.因此,在接口中声明方法时,不必提供关键字public. 接口中决不能含有实例域,也不能在接口中实现方法. 要让一个类使用排序服务,必须让它实现compareTo方法,因此必须实现Comparable

Java核心技术卷一 4. java接口、lambda、内部类和代理

接口 接口概念 接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义. 如果类遵从某个特定接口,那么久履行这项服务. public interface Comparable<T>{ int compareTo(T other); } 任何实现 Comparable 接口的类都需要包含 compareTo 方法,并且这个方法的参数必须是一个 T 对象,返回一个整形数值. 接口的特点: 接口中所有方法自动地属于 public,所以接口的方法不需要提供关键字 public .