A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
2.在JDK5中,为什么会有匿名内部类这个更新?
3.匿名内部类的本质是什么?
4.匿名内部类和匿名对象的应用场景?
5.为什么要重写toString和equals方法
6.== 和 equals的区别

12 个回复

倒序浏览
1.请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点       
        分为        成员内部类:定义在类中方法外
                局部内部类:定义在成员方法中的类
        特点:可以访问外部类的对象,外部只能通过定义方法来访问。
               
2.在JDK5中,为什么会有匿名内部类这个更新?
        在需要实现的类只使用一次时,可以减少编码量

3.匿名内部类的本质是什么?
        本质上是一个 父类/抽象类/接口 的 子类/实现对象

4.匿名内部类和匿名对象的应用场景?
        当方法的参数是抽象类或者接口类型,一般使用匿名内部类作为方法的参数传递。

5.为什么要重写toString和equals方法
        toString:可以重写为返回对象内容
        equals:可以重写为对比对象内容

6.== 和 equals的区别
        ==:对比字符串变量地址值
        equals:对比字符串变量内容
回复 使用道具 举报
1.        请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
内部类分为成员内部类与局部内部类
成员内部类
定义:类中方法体外
同名变量访问顺序 内部类局部变量-〉内部类成员变量-〉外部类局部变量-〉外部类成员变量
访问外部类成员变量形式 外部类名.this.变量名
外部类访问内部类形式 外部类名.内部类名 = new 外部类().new内部类();
局部内部类
定义:类中方法体内
同名变量访问顺序 局部内部类变量-〉局部内部类成员变量-〉外部类局部变量-〉外部类成员变量
外部类不能访问局部内部类 只能通过方法体内实例化局部内部类来访问

2.在JDK5中,为什么会有匿名内部类这个更新?
因为以前每次要实例一个抽象类的继承类/接口的实现类/父类的继承类都要创建该类的对象,但是只使用一次的话会显得过于麻烦,因此匿名内部类可以省略创建对象的过程
3.匿名内部类的本质是什么?
本质就是继承类/接口的实现类/父类的继承类创建的对象
4.匿名内部类和匿名对象的应用场景?
都应有于只调用或者使用一次继承类/接口的实现类/父类的继承类的对象的时候,比如当作参数,返回值
5.为什么要重写toString和equals方法
重写toString可以输出变量/对象的值,否则只会输出该变量/对象的地址值
6.== 和 equals的区别
==比较的是地址值 equals比较的是内容
回复 使用道具 举报
1.请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
答:内部类分为成员内部类和局部内部类,成员内部类中的特点是可以访问外部类的内容,无论是私有的还是公共的。外部类访问内部类必须创建对象才可以访问。外部访问的特点是可以用外.内  变量 = new 外().new 内();的语法格式调用。
局部内部类的话,在类中也可以直接访问外部类的内容,但是局部内部类只能在方法中创建,外部访问的特点是外部无法直接访问内部类,必须通过外部类中的方法(定义内部类的方法)来访问。

2.在JDK5中,为什么会有匿名内部类这个更新?
答:SUN公司为了代码的容易使用而更新的,主要是为了方便一些只需要用一次的接口/类的编写。

3.匿名内部类的本质是什么?
答:本质是一个父类/抽象类/接口的 子类/实现类。

4.匿名内部类和匿名对象的应用场景?
答:应用与一些只需要使用一次的类/接口的编写。和方法的参数是抽象类/接口时,作为参数的传递使用。

5.为什么要重写toString和equals方法
答:因为我们在编写代码时,基本不需要地址值间的对比和输出,比较需要的是对象内容的对比和输出。

6.== 和 equals的区别
答:==在基本数据类型之间比较的是数值,在引用数据类型之间比较的是地址值。而eauals则默认是比较引用数据类型的地址值,但可以通过重写方法来比较对象中的内容。
回复 使用道具 举报
1.请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
        内部类分为成员内部类和局部内部类
        成员内部类:在类中方法外,与外部类的成员同级,内部类可以直接访问外部类的成员,包括私有;外部类想要访问内部类的成员必须创建对象,也可以访问私有的成员;访问顺序:内部类局部->内部类成员->外部类成员
        局部内部类:在类中的方法中,与方法中的成员的同级,局部内部类可以直接访问外部类成员包括私有,外部类只能在方法中创建局部内部类的对象,方法外无法创建局部内部类对象。外界无法直接范围局部内部类,只能通过定义内部类的方法来访问;访问顺序:局部内部类局部位置->局部内部类成员位置->外部类局部位置->外部类成员位置。
2.在JDK5中,为什么会有匿名内部类这个更新?
        当我们创建一个抽象类的是时候,传统的方法我们必须建立一个继承该抽象类的子类,然后才能创建该抽象类的子类对象,才能访问该抽象类的成员。而匿名对象可以让我们直接在主方法中就可以创建抽象类的对象,而不用再去定义一个子类,再创建对象,会让人在使用仅需调用一次或者少次的抽象类的过程中更加简便。
3.匿名内部类的本质是什么?
        匿名类的本质是一种特殊的内部类,没有名称,但前提是必须有一个接口或者类。
4.匿名内部类和匿名对象的应用场景?
        调用方法,仅仅只调用一次的时候
          匿名对象可以作为实际参数传递

5.为什么要重写toString和equals方法
        toString:Object类中的toString方法返回的是类的名字和该对象的哈希码组成的一个字符串,是对象的地址码,当我们希望toString返回的是对象的值时就需要重写。
        equals:Object类中的equals方法,比较的是两个对象的地址值是否一致,当我们需要比较的是不同内存地址的两个对象的值是否一致时就需要重写。
6.== 和 equals的区别
        首先==在java中是逻辑运算符,而equals是Object类中的方法。然后==主要是判断两个对象的引用是否一致,是否是同一块内存,而重写过后的equals判断的是两个对象的值是否一致,而不是内存。
回复 使用道具 举报
1.请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
一个类包含另一个类,被包含的叫做内部类,包含内部类的叫做外部类。内部类又分为成员内部类和局部内部类。
成员内部类是定义在类中方法外的,局部内部类是定义在方法中的。
匿名内部类也是定义在方法中,当实现类只使用一次时使用匿名内部类。使用匿名内部类需要有一个父类/抽象类/接口,不需要编写类,可以
直接创建该类/抽象类/接口的子类/实现类对象。其本质是一个该父类/抽象类/接口的子类/实现类对象。

2.在JDK5中,为什么会有匿名内部类这个更新?
因为当实现类只使用一次,但却要因此创建一个类,很麻烦。
更新了匿名内部类后,在实现类只使用一次的情况下,就可以使用匿名内部类,省去创建一个新的类的步骤。


3.匿名内部类的本质是什么?
匿名内部类的本质是一个该父类/抽象类/接口的子类/实现类对象。


4.匿名内部类和匿名对象的应用场景?
当方法的参数是抽象类或者接口时。


5.为什么要重写toString和equals方法
重写toString方法的目的是返回对象的内容。
重写equals方法的目的是进行对象内容的比较。

6.== 和 equals的区别
==比较的是对象的地址值。
重写equals方法后比较的是对象内容。
回复 使用道具 举报
1. 请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
内部类分为两大类分别为成员内部类和局部内部类。成员内部类定义在类中方法外,局部内部类包含匿名内部类,它定义在类的方法中。它两都能同时访问外部类的私有成员变量,但是外部想访问它们就必须在合适的地方创建它们的对象来进行访问。

2.在JDK5中,为什么会有匿名内部类这个更新?
因为当我们只进行一次抽象类或者接口调用时,不得不创建一个实现类来进行对象创建并调用抽象类或者接口,当要进行多个抽象类或者接口的调用的时候我们就必须创建多个类来进行对象的创建,这样不仅麻烦而且很费时,所以匿名内部类的更新解决了这一问题。

3.匿名内部类的本质是什么?
匿名内部类的本质是一个继承了抽象类或者实现了接口的子类匿名对象。

4.匿名内部类和匿名对象的应用场景?
在程序的开发过程中我们发现某个方法需要,接口或抽象类的子类对象而它仅仅使用一次,这时候我们就可以传递一个匿名内部类过去,来简化传统的代码

5.为什么要重写toString和equals方法
1>重写toString是因为每个类在继承Object超类时,当我们输出创建对象时系统显示的是这个对象在内存中的地址值这没有什么意义,而重写toString方法当我们在调用对象名的时候系统就会将对象的属性值展示在我们面前以便于我们更好的操控。
2>重写equals是因为每个类在继承Object超类时,我们不希望比较对象的地址值,想要结合对象属性进行比较的时候超类Object提供的equals方法不能满足我们的需求,所以我们需要重写它。

6.== 和 equals的区别
==在比较基本数据类型的时候会比较数值是否相等,而在比较引用数据类型的时候会比较类型的地址值,改写后的equals不管是比较基本数据类型还是引用数据类型都可以对对象的内容进行比较。

回复 使用道具 举报
艺军 初级黑马 2019-10-8 21:32:34
8#
1.        请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
内部类分两中:1.成员内部类:位置在类中方法外,可以访问类中成员变量和成员方法。可以在类中主方法创建对象。
2.局部内部类:位置在方法中,也可以访问类中成员变量和成员方法。
只能在内部类中创建对象,无法在类外提供访问方式。
2.在JDK5中,为什么会有匿名内部类这个更新?
借鉴其他程序语言,对于只实现一次的类采用面向结果。节省程序代码量,不在创建实现类。
3.匿名内部类的本质是什么?
实现 父类/接口 子类的对象,节省子类/实现类的编写过程
4.匿名内部类和匿名对象的应用场景?
当方法的参数是 抽象类/接口 ,只需要使用一次参数的传递时使用匿名内部类。
当创建的对象只需要使用一次实现效果时,可以采用匿名对象。
5.为什么要重写toString和equals方法
所以的类都继承自Object,Object中自带有toString和equals方法。
使用toString方法一般得到的是地址值,除非有的父类有重写toString方法才能得到内容。
使用equals方法一般得到的是地址值的比较,需要重写方法才能对比内容。
6.== 和 equals的区别
==一般用于比较基本数据类型和地址值
equals用于比较应用数据类型的内容对比,区分大小写
回复 使用道具 举报
1.请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
内部类分为成员内部类和局部内部类。
成员内部类:定义在类中方法外
①成员内部类可以直接访问外部类的成员变量和成员方法,包括私有的。
②外部类可以通过创建成员内部类的对象来访问成员内部类的成员变量和成员方法。
③外界(测试类)可以通过创建内部类的对象来访问内部类,不过一般建议将内部类私有,对外提供访问方式。

局部内部类:定义在类中的成员方法中
①成员内部类可以直接访问外部类的成员变量和成员方法,包括私有的。
②外部类及外界无法直接创建成员内部类的对象,所以一般在方法内(创建内部类的方法)创建内部类对象,外界使用方法来访问内部类的成员。


2.在JDK5中,为什么会有匿名内部类这个更新?
为了在不创建子类/实现类的情况下创建对象。


3.匿名内部类的本质是什么?
本质是父类/接口 的子类对象/实现类对象。


4.匿名内部类和匿名对象的应用场景?
在只创建一次子类/实现类 对象的时候可以直接使用匿名内部类。
在只调用一次方法的时候可以直接使用匿名对象。


5.为什么要重写toString和equals方法
Object类下的toString方法默认是返回对象的地址值字符串,没啥意义。重写后一般返回对象的内容。
equals方法默认是比较两个对象的地址值,没啥意义。重写后一般比较对象内容。


6.== 和 equals的区别
①==可以比较基本数据类型,equals只能比较引用数据类型。
②在Object类中都是比较对象的地址值,在某些类中重写了equals方法,使得该类下的equals方法比较的是数据值。
回复 使用道具 举报
1.请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
成员内部类:
       访问特点 :类中:内部类直接访问外部类成员,包括私有;
                    外部类想要访问内部类的成员必须创建对象,也可以访问私有的成员;
                 外部:1.外部访问内部类:外.内 变量名 = new 外().new 内();
                   2.不希望外部直接访问到内部类,因此{1.将内部类私有化,使用private修饰;
                                                    2.在外部类中提供一个访问内部类的方法,在方法中创建对象;
局部内部类:
       访问特点:  类中 :   内部类直接访问外部类成员,包括私有;
                   外部类只能在方法中创建内部类对象,方法外是无法创建的
               外部 :  外界是无法直接访问局部内部类,只能通过外类中的方法(定义内部类的方法)来访问

2.在JDK5中,为什么会有匿名内部类这个更新?
在使用仅需调用一次或者少次的抽象类的过程中更加简便。
3.匿名内部类的本质是什么?
是一个继承了该类或者实现了该接口的子类匿名对象
4.匿名内部类和匿名对象的应用场景?
当发现某个方法需要,接口或抽象类的子类对象,我们就可以传递一个匿名内部类过去,来简化传统的
代码
5.为什么要重写toString和equals方法
toString :以良好的格式,更方便的展示对象中的属性值
equals :重写可比较对象的内容
6.== 和 equals的区别
==在基本数据类型中是判断数值是否相等,在引用类型中比较的是地址值;
equals默认比较的是地址值,但是通常通过重写来比较对象中的内容;
回复 使用道具 举报
1.请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
答:内部类分为成员内部类和局部内部类,匿名内部类属于局部内部类。
成员内部类在本类中的访问特点是:①内部类可以直接访问外部类的成员,包括私有的。②外部类要访问内部类的成员必须创建对象,也可以访问内部类私有的成员。
成员内部类在外部的访问特点是:①1.外部访问成员内部类的格式是:外部类名.内部类名  变量名 = new 外部类名().new 内部类名();②通常我们不希望外部直接获取内部类对象,所以我们通常把
内部类私有,只提供一种方法让外界访问,就是在该方法中创建对象并调用。
局部内部类在本类中的访问特点是:①内部类可以直接访问外部类的成员,包括私有的。②外部类只能在局部 内部类的该方法中创建内部类对象,方法外是无法创建的。
局部内部类在外部的访问特点是:①外界是无法直接访问局部内部类,只能通过外部类中的方法(在外部类的方法中创建内部类的对象来调用内部类的方法)来访问

2.在JDK5中,为什么会有匿名内部类这个更新?
答:因为sun公司希望在不编写类的情况下,就可以创建接口的实现类对象。

3.匿名内部类的本质是什么?
答:本质是一个接口/抽象类/普通父类 的 实现类/子类 。

4.匿名内部类和匿名对象的应用场景?
答:匿名内部类是当对象只需要创建一次的时候,可以使用匿名内部类。如果对象需要创建多次,建议编写类
      匿名对象是当方法只需要调用一次的时候,可以使用匿名对象。

5.为什么要重写toString和equals方法
答:因为toString默认的是打印出对象的地址值,而equals默认的是对比对象的地址值。通常我们在编写程序的时候用不到对象的地址值,
所以要重写toString和equals方法,打印出对象的内容和对比对象的内容。

6.== 和 equals的区别
答:==在基本数据类型之间比较的是数值,在引用数据类型之间比较的是地址值。而eauals则默认是比较引用数据类型的地址值,但可以通过重写方法来比较对象中的内容。
回复 使用道具 举报

1.请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
内部类总结特点:
内部类分为成员内部类和局部内部类
两者区别*1:定义的位置
成员内部类定义在类中方法外  
局部内部类定义在成员方法中
            *2:访问方式
成员内部类:外部类要想访问成员内部类中的方法或者对象必须创建对象,也可以访问到私有;内部类可以直接访问外部类的方法和对象包括私有
                   外界访问成员内部类格式 外部类名.内部类名  变量名 = new外部类名().new内部类名().对象名
                   如果不想让外界访问到可以用private修饰,想让外部访问就提供访问方法 ;
               
局部内部类:外部类想要访问局部内部类中的对象或者方法必须要在该内部类所在的方法中创建对象才可以访问,在方法外无法访问;内部类可以直接访问外部类的方法和对象包括私有
                   外界无法之间访问局部内部类,只能间接通过访问外部类中,该内部类所在的方法来访问。
           *3:访问顺序
成员内部类:内部类局部->内部类成员->外部类成员
局部内部类:局部内部类局部位置->局部内部类成员位置->外部类局部位置->外部类成员位置


2.在JDK5中,为什么会有匿名内部类这个更新?
在JDK5以前,每当只需要使用一次抽象类/接口/超类的实现类/子类的时候都需要创建一个类来调用实现类/子类的对象,比较繁琐,后来就推出了匿名内部类,在不需要新建类的情况下
就可以完成实例。

3.匿名内部类的本质是什么?
是一个超类/抽象类/接口的子类/实现类对象

4.匿名内部类和匿名对象的应用场景?
当只需要调用一次子类/实现类的对象时可以使用,例如当接口/抽象类/超类作为参数,返回值的时候

5.为什么要重写toString和equals方法
有的方法会自带toString的重写方法,这时候打印输出会获得对象的属性值。有的方法不会自带toString重写方法,这个时候如果我们需要的到的时对象/变量的属性值的时候就需要重写toString,
否则得到的是一个地址值。建议当我们的方法时自定义的时候都重写一下toString。
equals没有重写时比较的是两个对象的地址值,当我们需要比较两个对象的属性值是否一致时就需要重写equals

6.== 和 equals的区别
==用于比较基本数据类型和地址值,而equals只能比较引用数据类型,重写之后也可以比较两个对象的属性值


回复 使用道具 举报
1.请参照课上的xmind自己完成内部类的总结,用你的语言描述内部类的分类和特点
内部类分为成员内部类和局部内部类

成员内部类:
类中成员方法外定义,成员内部类可以访问外部类的所有成员(包括私有类型成员);
外部类也可以访问内部类的所有成员(包括私有类型成员),前提是需要创建内部类对象
外界也可以访问成员内部类,需要创建内部类对象,格式为 外部类.内部类 变量名 = new 外部类().new 内部类();
访问顺序 成员内部局部变量,成员内部类成员变量,外部类成员变量

局部内部类:
成员方法中定义,局部内部类可以访问外部类的所有成员(包括私有类型成员),以及该类所在成员方法的变量;
局部内部类只能在所在的方法中创建对象并调用,方法外无法创建局部内部类对象,外界无法访问;
访问顺序 局部内部类局部变量,局部内部类成员变量,外部类局部变量(变量同名时,无法手动获取,只能通过访问顺序访问),外部类成员变量


2.在JDK5中,为什么会有匿名内部类这个更新?
在实现对象时需要编写相关的类,但创建的对象只需要使用一次,会造成资源浪费
为了在不编写类的前提下创建对象,所以创造了匿名内部类。

3.匿名内部类的本质是什么?
创建子类/抽象类的子类/实现类的对象

4.匿名内部类和匿名对象的应用场景?
当对象只需要创建一次时,可以匿名内部类
当方法只需要调用一次时,可以使用使用匿名对象

5.为什么要重写toString和equals方法
使用toString和equals方法得不到我们想要的结果

6.== 和 equals的区别
==对数值进行比较或者对引用数据类型的地址值进行比较
equals可以对内容进行比较
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马