Home Java javaTutorial java inner class, anonymous inner class

java inner class, anonymous inner class

Dec 15, 2016 pm 12:51 PM
anonymous inner class

Java internal classes are divided into 4 types:

1) Static internal classes: Classes modified by static are called static classes. Putting static classes inside a class is called static internal classes

Features: Can access the outside world: static methods /Static properties, cannot access instance resources

Case:

import inner.Foo.Koo;//Be sure to import the Koo static inner class

public class Demo9 {

public static void main(String[] args) {

Koo koo = new Koo();

koo.add();

}

}

class Foo{

int a = 12;//Instance variable

static int aa=16;

public static void show(){ System.out.println("static method");}

//static inner class

static class Koo{

public void add(){

// System.out .println(a); Static inner classes cannot access instance resources (variables)

System.out.println(aa);

show();//Static inner classes can access static properties and methods of the outside world

}

}

}

2) Member inner class: Inside a class, a class without static modification is directly defined. When creating a member inner class object, the outer class must be created first.

Features: member inner class, can access external properties and methods

Case:

import inner.Foo1.Koo1;

public class Demo10 {

public static void main(String[] args) {

/ /Koo1 koo1 = new Koo1(); To create a member inner class, you must first create an external class object

Foo1 foo1 = new Foo1();

//Remember (written examination)

Koo1 koo1 = foo1. new Koo1();

koo1.show();

}

}

class Foo1{

int a =12;

static int aa = 16;

class Koo1{

void show() {

System.out.println(a+" , "+aa);

}

}

}

3) Local internal classes: very rarely used, characterized by defining a class within a method (enterprise development Medium and rarely used)

Features: local inner class, when referencing external variables, the variable must be modified with final

Case:

public class Demo11 {

public static void main(String[] args) {

final int a = 12;

final int b = 13;

class Foo2{

int c = 16;

public int add(){

//In the local inner class, refer to external variables , then the variable must be modified with final

return a+b+c;

}

}

Foo2 foo2 = new Foo2();

System.out.println(foo2.add());

}

}

4) Anonymous inner class: an inheritance of the original class

Features: used in combination with interfaces/abstract classes

eg new class name/interface name {

overridden method

};

Case:


public class Demo1 {

public static void main(String[] args) {

Koo koo = new Koo(){

// You can override the method

public String toString() {

Return "A Koo object is generated";

}

// New methods cannot be created in anonymous inner classes

// public void show(){

// System.out.println( "liu");

// }

};

System.out.println(koo);

// koo.show();

}

}

class Koo{

}



For more java internal classes and anonymous internal classes related articles, please pay attention to the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Roblox: Bubble Gum Simulator Infinity - How To Get And Use Royal Keys
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers Of The Witch Tree - How To Unlock The Grappling Hook
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusion System, Explained
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1668
14
PHP Tutorial
1273
29
C# Tutorial
1256
24
How does Java anonymous inner class solve memory leak problem? How does Java anonymous inner class solve memory leak problem? May 01, 2024 pm 10:30 PM

Anonymous inner classes can cause memory leaks. The problem is that they hold a reference to the outer class, preventing the outer class from being garbage collected. Solutions include: 1. Use weak references. When the external class is no longer held by a strong reference, the garbage collector will immediately recycle the weak reference object; 2. Use soft references. The garbage collector will recycle the weak reference object when it needs memory during garbage collection. Only then the soft reference object is recycled. In actual combat, such as in Android applications, the memory leak problem caused by anonymous inner classes can be solved by using weak references, so that the anonymous inner class can be recycled when the listener is not needed.

What are the design patterns for anonymous inner classes in Java? What are the design patterns for anonymous inner classes in Java? May 02, 2024 pm 04:42 PM

Anonymous inner classes are special inner classes in Java that have no explicit name and are created through the new expression. They are mainly used to implement specific interfaces or extend abstract classes and are used immediately after creation. Common anonymous inner class design patterns include: Adapter pattern: converts one interface into another interface. Strategy Pattern: Defining and Replacement Algorithms. Observer pattern: Register observers and handle events. It is very useful in practical applications, such as sorting a TreeSet by string length, creating anonymous threads, etc.

In what scenarios are Java anonymous inner classes not suitable for use? In what scenarios are Java anonymous inner classes not suitable for use? May 03, 2024 pm 05:42 PM

Anonymous inner classes are not suitable for use when: need to access private members, need multiple instances, need inheritance, need to access generic types

What are the advantages of anonymous inner classes in Java? What are the advantages of anonymous inner classes in Java? Apr 30, 2024 am 11:39 AM

Anonymous inner classes are used in Java as special inner classes that facilitate subclassing, simplifying code, and handling events (such as button clicks). Practical cases include: Event handling: Use anonymous inner classes to add click event listeners for buttons. Data transformation: Sort collections using Collections.sort method and anonymous inner class as comparator.

What are the common mistakes with anonymous inner classes in Java? What are the common mistakes with anonymous inner classes in Java? May 02, 2024 am 09:03 AM

Anonymous inner class usage error: Accessing an out-of-scope variable using catching an undeclared exception in a non-thread-safe environment

How to optimize performance of Java anonymous inner classes? How to optimize performance of Java anonymous inner classes? May 02, 2024 am 08:48 AM

The performance problem of anonymous inner classes is that they are recreated every time they are used, which can be optimized through the following strategies: 1. Store anonymous inner classes in local variables; 2. Use non-static inner classes; 3. Use lambda expressions. Practical tests show that lambda expression optimization has the best effect.

What are the limitations of Java anonymous inner classes? What are the limitations of Java anonymous inner classes? May 01, 2024 pm 02:18 PM

The limitations of anonymous inner classes include: inability to access external local variables; inability to directly access external this reference; inability to throw checked exceptions; code redundancy; inability to serialize.

What is the life cycle of Java anonymous inner classes? What is the life cycle of Java anonymous inner classes? May 01, 2024 pm 04:06 PM

The lifetime of an anonymous inner class is determined by its scope: Method-local inner class: Valid only within the scope of the method that created it. Constructor inner class: bound to the outer class instance and released when the outer class instance is released. Static inner classes: loaded and unloaded at the same time as external classes.

See all articles