美文网首页
所有内部类

所有内部类

作者: 牛倩贱 | 来源:发表于2019-02-11 21:18 被阅读0次

内部类的使用(匿名内部类重点难点)

1.成员内部类

1)通过在外部类中创建内部类对象,调用内部类成员

class InterClass {

int sum;

void function(){

Person p=new Person();//在外部类中创建内部类对象,调用内部类成员

p.show();

}

class Person{//成员内部类

int age=10;

String name="兰兰";

void show(){

System.out.println("age"+age+"      name"+name);

}

}

}

public class InTest {//成员内部类的测试类

public static void main(String[] args) {

InterClass i=new InterClass();

i.function();

}

}

2)直接通过外部类去访问内部类成员

格式:外部类名.内部类名  对象=new  类名().new  内部类名();

class InterClass {

int sum;

void function(){

/*Person p=new Person();

p.show(); */

}

class Person{//方法内部类

int age=10;

String name="兰兰";

void show(){

System.out.println("sum"+sum+"    age"+age+"      name"+name);

}

}

}

public class InTest {

public static void main(String[] args) {

InterClass.Person i=new InterClass().new Person();

i.show();

}

}

2.方法内部类

class InterClass {

int sum;

void function(){

class Person{//方法内部类

int age=10;

String name="兰兰";

void show(){

System.out.println("sum"+sum+"    age"+age+"      name"+name);

}

}

Person p=new Person();

p.show();

}

}

public class InTest {

public static void main(String[] args) {

InterClass i=new InterClass();

i.function();

}

}

3.static内部类

class InterClass {

static int sum;//sum必须被static修饰,不然show方法取不到值;

//扩充:在静态方法中只能访问static修饰的成员变量

    //    若要访问没有被static修饰的成员,必须先创建对象才能被访问

void function(){

/*Person p=new Person();

p.show(); */

}

static class Person{//方法内部类

int age=10;

String name="兰兰";

void show(){

System.out.println("sum"+sum+"    age"+age+"      name"+name);

}

}

}

public class InTest {

public static void main(String[] args) {

InterClass.Person i=new InterClass.Person();//被static修饰的类无需创建对象即可被调用

i.show();

}

}

4.匿名内部类

(1)第一种方法:只能调用一次成员

package it.test.come;

/*匿名内部类

* 匿名内部类是方法内部类,需先创建对象,再赋值给内部类变量

格式:new 类/接口名(){  }

原理:创建了继承这个类的子类对象(需重写父类方法)或实现这个接口的子类(实现这个接口的所有方法)

*/

interface InterClass {

public static final int sum=10;

      void fun();

}

class Outer{

void outershow(){

new InterClass(){

@Override

public void fun() {

System.out.println("实现接口的抽象方法");

}

}.fun();;

}

}

public class InTest {

public static void main(String[] args) {

Outer o=new Outer();

o.outershow();

}

}

(2)第二种方法:可多次调用成员

interface InterClass {

public static final int sum=10;

      void fun();

}

class Outer{

void outershow(){

InterClass i=new InterClass(){

@Override

public void fun() {

System.out.println("实现接口的抽象方法");

}

};

i.fun();//可以多次调用

i.fun();

}

}

public class InTest {

public static void main(String[] args) {

Outer o=new Outer();

o.outershow();

}

}

4.匿名内部类的应用场景

参数传递(1)

interface InterClass {

public static final int sum=10;

      void fun();

}

public class Inter implements InterClass {

@Override

public void fun() {

System.out.println("实现接口的抽象方法");

}

}

public class InTest {

public static void main(String[] args) {

show(new Inter());

}

static void show(InterClass i){

i.fun();

}

}

(2)匿名内部类应用场景

interface InterClass {

public static final int sum=10;

      void fun();

}

public class InTest {

public static void main(String[] args) {

show(new InterClass(){

@Override

public void fun() {

System.out.println("实现接口的抽象方法");

}

});

}

static void show(InterClass i){

i.fun();

}

}

相关文章

  • 内部类

    内部类 1.可以访问访问其外部类所有属性和方法,无需创建外部类对象 2.必须创建内部类对象,否则无法从外部类访问内...

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • Java学习——内部类

    内部类 一,成员内部类(包括静态内部类和非静态内部类) 非静态内部类可以直接访问外部类的成员,反之则不行 非静态内...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • Java 中的方法内部类

    Java 中的方法内部类 方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内...

  • java——内部类

    内部类 定义: 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,并且依附于外部类而存在的。内...

  • java之面向对象5

    方法内部类: 简而言之就是定义在外部类的方法内的类。 方法内部类只在该方法的内部可见,即只在该方法内可以使用。 方...

  • Java 内部类

    1. 内部类 概念:在一个类的内部再定义一个完整的类内部类分为 4 类:成员内部类、静态内部类、局部内部类、匿名内...

网友评论

      本文标题:所有内部类

      本文链接:https://www.haomeiwen.com/subject/xbtpcqtx.html