面向对象(6)之匿名内部类

1.案例演示

* 匿名内部类的方法调用

案例:

public class Demo_NoNameInnerClass {

public static void main(String[] args){

Outer o = new Outer();

o.method();

}

}

//匿名内部类只适用于一个方法的重写

interface Inter{

public void show1();

public void show2();

}

class Outer{

public void method(){

Inter i=new Inter(){

public void show1() {

// TODO Auto-generated method stub

System.out.println("show1");

}

public void show2() {

// TODO Auto-generated method stub

System.out.println("show2");

/*public void show3() {

*         System.out.println("show3");

*             } 不适用内部有自己的方法*/

}

};

i.show1();

i.show2();

}

}

2.匿名内部类在开发中的应用

* A:代码如下

public class Test1_NoNameInnerClass {

public static void main(String[] args){

PersonDemo pf= new PersonDemo();

pf.method(new Person(){//匿名内部类

public void show(){

System.out.println("show");

}

});

//pf.method(new Student());不用内部类相当于 Person p=new Person();父类引用子类对象

}

}

abstract class Person{

public abstract void show();

}

class PersonDemo{

public void method(Person p){

p.show();

}

}

class Student extends Person{

public void show() {

// TODO Auto-generated method stub

System.out.println("show");

}

}

输出:

Show

3.面试题

按照要求,补齐代码

interface Inter { void show(); }

class Outer { //补齐代码 }

class OuterDemo {

public static void main(String[] args) {

Outer.method().show();

}

}

要求在控制台输出"HelloWorld

public class Test_NoNameInnerClass {

public static void main(String[] args){

Outer.method().show();

/*Inter i= Outer.method();

i.show();*/

}

}

interface Inter{

void show();

}

class Outer{

public static Inter method(){// Outer.method().show(); Outer.method()可知method为static 返回类型为Inter型对象与方法返回值同一类型

return new Inter(){//返回子类对象

public void show(){

System.out.println("show");

}

};//注意匿名内部类以};结尾

}

}

时间: 2024-10-12 21:40:41

面向对象(6)之匿名内部类的相关文章

面向对象、匿名内部类

1 内部类 1.1 内部类的概述 将类定义在另一个类的内部则成为内部类.其实就是类定义的位置发生了变化. 在一个类中,定义在类中的叫成员变量,定义在函数中的叫成员函数,那么根据类定义的位置也可以分为成员内部类和局部内部类. 备注:内部类生产的class文件为 “外部类$内部类”,为了标明该内部类是属于具体哪个外部类的. 1.2 成员内部类的访问方式 内部类可以直接访问外部类的成员属性.(孙悟空相当于内部类飞到牛魔王的肚子里面去). 外部类需要访问内部类的成员属性时需要创建内部类的对象. 在外部类

面向对象(局部内部类和匿名内部类)

/** * Created by rabbit on 2014-08-05. * 内部类定义在局部时, * 1.不可以被成员修饰符修饰 * 2.可以直接访问外部类中的成员,因为还持有 * 外部类中的引用.但是不可以访问他所在的局部中 * 的变量.只能访问被final修饰的局部变量. * * 匿名内部类 * 1.匿名内部类就是内部类的简写格式 * */ class outer4 {     int x = 3 ;     void method()     {         final int

《java入门第一季》之面向对象(匿名内部类)

1.认识匿名内部类 /* 匿名内部类 就是内部类的简化写法. 前提:存在一个类或者接口 这里的类可以是具体类也可以是抽象类. 匿名内部类的格式: new 类名或者接口名(){ 重写方法; }:这代表的是一个子类对象 本质是什么呢? 是一个继承了该类或者实现了该接口的子类匿名对象. */ interface Inter { public abstract void show(); public abstract void show2(); } class Outer { public void m

12-20java面向对象之Object类&包装类&匿名内部类

1.Object类 在java的开发中,一切类都是以继承的方式存在的,如果一个类在定义时没有明确指明继承的是哪个类,那么默认情况继承Object类. 例如 class Person { } 以上代码默认定义Object,其完整表达形式为: class Person extends Object { } 在jdk文档中,API-> index->java.lang->Object寻找Object类. 一个完整的类应该是覆写Object类的方法,下面主要讲解重要的方法. 1.1public 

JavaSE知识-10(面向对象_权限修饰符&匿名内部类)

A:为什么要有包 将字节码(.class)进行分类存放 包其实就是文件夹 举例: 学生:增加,删除,修改,查询 老师:增加,删除,修改,查询 ... 方案1:按照功能分 com.hwh.add AddStudent AddTeacher com.hwh.delete DeleteStudent DeleteTeacher com.hwh.update UpdateStudent UpdateTeacher com.hwh.find FindStudent FindTeacher 方案2:按照模块

《java入门第一季》之面向对象匿名内部类面试题

面试题一: /* 按照要求,补齐代码 interface Inter { void show(); } class Outer { //补齐代码 } class OuterDemo { public static void main(String[] args) { Outer.method().show(); } } 要求在控制台输出"HelloWorld" */ interface Inter { void show(); //接口中的抽象方法,默认格式:public abstra

JAVA基础——面向对象三大特性:封装、继承、多态

JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据.     隐藏类的实例细节,方便修改和实现. 3.封装的实现步骤 需要注意:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作.当然最好使用get/set方法,比较标准. A.访问修饰符 从表格可以看出从上到下封装性越来越差. B.this关键字 1.this关键字代表当前

Java学习轨迹【面向对象】(持续更新)

其中部分内容为其他博主所作,侵删 6月12日-7月每日更新 Java学习轨迹 一.面向对象 类和对象 1. new关键字所完成的事情 1)为对象开辟了新的内存空间 2)调用类的构造方法 3)返回生成对象的地址 Dog dog=new Dog(); dog是引用,new Dog()生成了一个Dog对象,引用dog指向所生成对象的地址 2.构造方法 1)构造方法必须与类名相同 2)构造方法没有返回值[且不能使用void作返回值] 3)如果在定义类的时候没有为类声明构造方法java编译器会自动为类添加

10 面向对象(package关键字的概述及作用)

10.01_面向对象(package关键字的概述及作用) A:为什么要有包 *开发时有很多类,如果放在一个文件夹中不方便管理,而且容易重复 将字节码(.class)进行分类存放 包其实就是文件夹 B:包的概述 举例: 学生:增加,删除,修改,查询 老师:增加,删除,修改,查询 - 方案1:按照功能分 com.heima.add AddStudent AddTeacher com.heima.delete DeleteStudent DeleteTeacher com.heima.update U