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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


1.什么是内部类,使用匿名内部类的前提是什么?

内部类是在一个类中定义的类 分为成员内部类和局部内部类,匿名内部类
使用匿名内部类的前提是 我只需要继承或者实现一次 抽象类子类对象/接口实现 就使用匿名内部类,这样可以省略一个实现类的定义节省空间


2.请从你的理解谈谈,匿名内部类的作用?

比如一个接口我现在只需要实现一次,如果不用匿名内部类则需要定义一个实现类再创建对象调用该方法,用了匿名内部类则定义实现类和对象在一行代码,省略的定义实现类的操作,节省了空间


3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?

打印的是地址值的是因为子类没有重写Object中的ToString方法默认返回的是地址值
有些类则重写了ToString方法,就可以打印对象中的内容
我们想打印对象内容也可以在定义类时重写ToString方法 打印自己想要的内容


4.我们为什么要重写equals()方法?

我们自己定义的类不重写equals它底层代码是== 如果对比的是两个对象时则会对比它们的地址值,重写了equals则对比的时对象中的内容


5.==和equals()的区别?
==对比的是两个值是否相等,  equals重写后则可以对比对象中的内容
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
内部类:在一个类中定义一个类,可以在类中方法外~成员内部类,也可以在类中方法内~局部内部类。
前提:必须存在一个类或者是接口,类的话可以是普通类,也可以是抽象类。


2.请从你的理解谈谈,匿名内部类的作用?
作用:当方法中需要一个抽象类的子类或者是接口的实现类时,我们可传递一个匿名内部类,这样就可以简化代码。


3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
当我们直接打印对象的时候,打印的是地址值(Object类中toString打印默认为地址值)
当我们对Object中的toString方法进行重写时,就会打印对象的内容,
当我们需要打印对象以字符串形式表示的时候就会调用toString()方法


4.我们为什么要重写equals()方法?
当我们将两个对象进行比较的时候,比较的是他们的地址值(Object中equals方法默认比较的是地址值)
当我们不希望比较对象的地址值,而是比较他们的内容的时候,就需要将equals()方法重写,

5.==和equals()的区别?
==:是将两个对象的地址值和内容属性进行比较
equals():是将两个对象的地址值进行比较,只有重写equals()方法时,才会比较他们的内容属性。
回复 使用道具 举报
1.在一个类中又定义另一个类。使用匿名内部类的前提是存在一个类或者接口,这里的类可以是具体也可以是抽象类。
2.匿名内部类的本质是一个继承了该类或者实现该接口的子类匿名对象。如果这个子类只用到1次的话,有匿名内部类的话,就可以不需要再写这个子类了,省略了实现类的编写,可以简化代码。
3.打印对象和sout(对象.toString())效果是一样的,会默认加上.toString()方法。如果toString()方法没有重写,使用的是Object类的,返回的是一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。重写toString()方法可以改变返回字符串内容。打印对象的时候会默认调用同String().
4.因为默认继承的是Object类,而Object类的equals方法返回的是(this == obj)的比较地址的结果,有时候我们要比较的是内容,而不是地址,所以需要重写equals方法。
5.==对基本数据类型来说比较的是值,对引用数据类型来说比较的是对象的地址值。Object类中的equals比较的也是地址值,有些类重写了equals方法,变成比较内容。
回复 使用道具 举报

1.什么是内部类,使用匿名内部类的前提是什么?

当俩个类是包含关系,其中一个类依附于另一个类存在,类叫做内部类,包含他的类叫做外部类

当实现类对象只创建一次的时候,可以将编写实现类和创建对象二合一,使用匿名内部类


2.请从你的理解谈谈,匿名内部类的作用?

简化了代码,省略了实现类的编写


3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?


使用输出语句打印对象的时候,默认调用toString()方法。
4.我们为什么要重写equals()方法?



因为底层默认使用的是== 比较的是俩个地址值相同, 重写equal()方法是为了比较俩个对象内容相同
5.==和equals()的区别?
引用数据类型==比较的是地址值
重写后equal比较的是内容
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
定义在类中的类就是内部类,出现在一个类依附于另一个类的时候
存在一个类或者接口,这里的类可以是具体类也可以是抽象类


2.请从你的理解谈谈,匿名内部类的作用?
当发现某个方法需要,接口或抽象类的子类对象,我们就可以传递一个匿名内部类过去,来简化传统的代码


3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
打印对象出现地址值是该类中没有重写Object类中的toString方法,打印出现对象内容时则是重写了toString方法。
希望打印子类对象的时候,显示的是对象的内容


4.我们为什么要重写equals()方法?
希望调用equals方法的时候,对象比较的是内容


5.==和equals()的区别?
==是一个比较运算符,在基本数据类型中是比较值是否相等,在引用数据类型中比较的是地址值(对象的指引)是否相等。
equals()是一个方法,只能比较引用数据类型;
重写前比较的是地址值,比如在String,Integer,Date类中,重写了equals()方法,比较的是对象的具体内容。
回复 使用道具 举报
1.什么是内部类,使用匿名内部类的前提是什么?
在类中创建的类,是内部类
前提:在只创建一次对象的时候,不得不编写子类/实现类

2.请从你的理解谈谈,匿名内部类的作用?
外界不能直接访问匿名内部类中的方法
省略了实现类的编写,减少内存占用。

3.思考一下为什么打印对象,有的是地址值,有的是对象内容?对象在什么时候会调用toString()方法?
所有的类都直接或间接继承Object,当打印对象时,默认调用toString()方法,不重写toString()方法,则打印的是地址值,
重写toString()方法,则打印的是对象内容。
子类重写Object类中toString()方法,子类对象会调用toString()方法
4.我们为什么要重写equals()方法?
在Object类中,默认equals比较的是地址值
调用equals方法的时候,需要对象比较的是内容,则需要重写
5.==和equals()的区别?
==比较的是对象的地址值
equals()在Object类中,默认比较是地址值,当equals()被重写,则比较的是对象的内容
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马