在千锋学习的第20天
不积跬步无以至千里,不积小流无以成江河!加油
今天我学习了内部类和Object类,Object是以前经常提到的超类(祖先类)
内部类主要分为四种:
(1)成员内部类,静态内部类,局部内部类,匿名内部类
(2)Object的学习的方法为:getClass()返回当前对象的字符串名,hashCade()返回当前对象的int类型的名字按照一定算法,toString()需要自己定义,就是返回当前对象各个属性名字,equals(Object obj)需要传入对象,也是需要自己重写,返回一个boolean值,大体就是判断两个对象是不是各个属性内容相同
下面是我做的内部类和Object类的习题
以上程序运行的结果为:
null 0
Tom 18
程序输出结果为:
true
false
程序输出额结果为:
true
false
答案为:ABCD
6.为Worker类增加一个equals和toString
package q6;
public class TestWorker {
public static void main(String[] args){
Object obj = new Worker("tom",18,"男","1457855488");
Object obj1 = new Worker("tom",18,"男","1457855488");
System.out.println(obj);
System.out.println(obj.equals(obj1));
}
}
class Worker{
String name;
int age;
String sex;
String phone;
public Worker(){}
public Worker(String name, int age, String sex, String phone) {
super();
this.name = name;
this.age = age;
this.sex = sex;
this.phone = phone;
}
@Override
public boolean equals(Object wor) {
if(this == wor){//判断他们两个地址是相同的吗,相同的话就直接返回真了
return true;
}
if(wor == null){//判断传入的参数是
return false;
}
if(wor.getClass() != this.getClass()){
return false;
}
Worker ww = (Worker)wor;
if(this.name.equals(ww.name) && this.age == ww.age && this.sex.equals(ww.sex) && this.phone.equals(ww.phone)){
return true;
}
return false;
}
public String toString(){
return this.name +"\t"+this.age+"\t"+this.sex+"\t"+this.phone;
}
}
答案为ABCD
补全代码为:
Lamp lamp = new Lamp();
class Red implements Light{
@Override
public void shiner() {
System.out.println("shiner in red");
}
}
Light red = new Red();
lamp.on(red);
Light yellow = new Light(){
public void shiner(){
System.out.println("shiner in yellow");
}
};
lamp.on(yellow);
欢迎大家指正!