java类 get()_java类 (二):内部类

如果一个类要被声明为static的,只有一种情况,就是静态内部类。如果在外部类声明为static,程序会编译都不会过。在一番调查后个人总结出了3点关于内部类和静态内部类(俗称:内嵌类)

1.普通内部类:注意调用的方法【外部类不能是抽象类和接口】

//外部类

class Out {

private int age = 12;

//内部类

class In {

public void print() {

System.out.println(age);

}

}

}

public class Demo {

public static void main(String[] args) {

Out.In in = new Out().new In();

in.print();

}

}

2.匿名内部类:注意结构======>注意 这个父类构造器可以是 抽象类

new 父类构造器(参数列表)|实现接口()

{

//匿名内部类的类体部分

}

匿名内部类调用两种方式

package lianxi;

public class Lianxi {

public static void main(String[] args) {

/*====>这种构造方法可以实现父类中没有的方法实现调用

* new Dongwu() {

public void xiuxi() {

System.out.println("看看这个地方");

};

public void xiuxi1() {

System.out.println("看看这个那地方");

};

}.xiuxi1();*/

Dongwu d = new Dongwu() {

//这种方法只能对外类的方法进行重写 不然调用的时候会报错

public void xiuxi() {

System.out.println("看看这个地方");

};

};

d.xiuxi();

}

}

abstract class Dongwu{

public static int age = 10;

public void chi() {

System.out.println("吃肉");

}

abstract void xiuxi();

}

class Dog extends Dongwu{

public void xiuxi() {

System.out.println("娱乐项目"+Dongwu.age);

}

public void wan() {

System.out.println("娱乐玩项目"+Dongwu.age);

}

}

3.静态内部类=====>注意调用方法

class Out {

private static int age = 12;

static class In {

public void print() {

System.out.println(age);

}

}

}

public class Demo {

public static void main(String[] args) {

Out.In in = new Out.In();

in.print();

}

}

4.方法内部类(局部内部类)====》了解 就可   据说不常用

方法内部类 中不能用限制符修饰(如 public)

class Out {

private int age = 12;

public void Print(final int x) {

class In {

public void inPrint() {

System.out.println(x);

System.out.println(age);

}

}

new In().inPrint();

}

}

public class Demo {

public static void main(String[] args) {

Out out = new Out();

out.Print(3);

}

}

5.

在上面的代码中,我们将内部类移到了外部类的方法中,然后在外部类的方法中再生成一个内部类对象去调用内部类方法

如果此时我们需要往外部类的方法中传入参数,那么外部类的方法形参必须使用final定义

至于final在这里并没有特殊含义,只是一种表示形式而已【这个地方我没遇到过,以后遇到再说【自己测试过几次反正不用final】】

6.内部内传值同样是给内部类定义一个方法 间接改变其他参数

new ActionListener(){

private String innerStr;

@Override

public void actionPerformed(ActionEvent arg0) {

jl.setText(innerStr);

}

public ActionListener accept(String str) {

this.innerStr = str;

return this;

}

}.accept(innerString);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值