您的位置:首页 > 编程语言 > Java开发

Java学习笔记15(面向对象八:匿名对象、内部类)

2018-01-09 09:22 886 查看
匿名对象:

是指创建对象的时候,只有创建对象的语句,却没有把对象地址值赋给某个变量

创建一个普通对象:

Person p = new Person();

创建一个匿名对象:

new Person();

注意:

1.匿名对象只能使用一次

2.匿名对象可以作为参数传递

3.匿名对象可以当作方法的返回值

示例:

public class Demo {
public static Person getPerson(){
//普通方式
//Person p = new Person();
//return p;

//匿名对象作为方法返回值
return new Person();
}

public static void method(Person p){}
}

public class Test {
public static void main(String[] args) {
//调用getPerson方法,得到一个Person对象
Person person = Demo.getPerson();

//调用method方法
Demo.method(person);
//匿名对象作为方法接收的参数
Demo.method(new Person());
}
}


内部类:

在类的内部定义类

什么时候需要呢?比如,一个汽车,包含发动机,发动机就可以用内部类来描述

内部类的分类:成员内部类,局部内部类

成员内部类的建立和调用示例:

public class Outer {
private int a = 1;
//内部类可以使用外部类成员,包括私有
//外部类无法直接使用内部类变量,必须建立内部类对象
class Inner{
public void inner(){
System.out.println("内部类方法"+a);
}
}
}


public class Test {
public static void main(String[] args) {
//内部类调用格式:
Outer.Inner in = new Outer().new Inner();
in.inner();
}
}


同名变量的调用问题:

public class Outer {
int i = 1;
class Inner{
int  i =2;
public void inner(){
int  i = 3;
System.out.println(i);//3
System.out.println(this.i);//2
System.out.println(Outer.this.i);//1
}
}
}


局部内部类:

把一个类写在了一个方法里面

调用方法相对复杂

示例:

public class Outer {
public void out(){
class Inner{
public void inner(){
System.out.println("局部内部类方法");
}
}
Inner inner = new Inner();
inner.inner();
}
}


public class Test {
public static void main(String[] args) {
new Outer().out();
}
}


内部类的实际使用:

匿名内部类:

临时定义某一指定类型的子类,定义后立即创建刚刚定义的这个子类对象

示例:

public interface Smoking {
public abstract void smoking();
}


public class Test {
public static void main(String[] args) {
//固定格式
//实际上创建了接口的实现类,重写方法
//这里也可以这样写Smoking s = new Smoking() {};
//然后s.方法调用
new Smoking() {
public void smoking() {
System.out.println("人在吸烟");
}
}.smoking();
//注意这个分号
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: