零基础学JAVAJava SE面向对象部分19面向对象高级07.docx
《零基础学JAVAJava SE面向对象部分19面向对象高级07.docx》由会员分享,可在线阅读,更多相关《零基础学JAVAJava SE面向对象部分19面向对象高级07.docx(21页珍藏版)》请在冰豆网上搜索。
零基础学JAVAJavaSE面向对象部分19面向对象高级07
上季内容回顾:
代理设计、适配器设计
抽象类和接口的区别
本季主要知识点:
本季以题目讲解为主,详细的讲解了抽象类和接口的实际应用及典型的实例分析。
练习题一
abstractclassEmployee
{
privateStringname;
privateintage;
privateStringsex;
publicEmployee(){}
publicEmployee(Stringname,intage,Stringsex)
{
this.setName(name);
this.setAge(age);
this.setSex(sex);
}
publicvoidsetName(Stringname)
{
this.name=name;
}
publicvoidsetAge(intage)
{
this.age=age;
}
publicvoidsetSex(Stringsex)
{
this.sex=sex;
}
publicStringgetName()
{
returnthis.name;
}
publicintgetAge()
{
returnthis.age;
}
publicStringgetSex()
{
returnthis.sex;
}
//显示数据
publicabstractStringgetInfo();
}
classManagerextendsEmployee
{
//职务
privateStringjob;
//年薪
privatefloatincome;
publicManager(){}
publicManager(Stringname,intage,Stringsex,Stringjob,floatincome)
{
super(name,age,sex);
this.setJob(job);
this.setIncome(income);
}
publicvoidsetJob(Stringjob)
{
this.job=job;
}
publicvoidsetIncome(floatincome)
{
this.income=income;
}
publicStringgetJob()
{
returnthis.job;
}
publicfloatgetIncome()
{
returnthis.income;
}
publicStringgetInfo()
{
return"管理层信息:
"+"\n"
+"\t|-姓名:
"+super.getName()+"\n"
+"\t|-年龄:
"+super.getAge()+"\n"
+"\t|-性别:
"+super.getSex()+"\n"
+"\t|-职务:
"+this.getJob()+"\n"
+"\t|-年薪:
"+this.getIncome();
}
}
classWorkerextendsEmployee
{
privateStringdept;
privatefloatsalary;
publicWorker(){}
publicWorker(Stringname,intage,Stringsex,Stringdept,floatsalary)
{
super(name,age,sex);
this.setDept(dept);
this.setSalary(salary);
}
publicvoidsetDept(Stringdept)
{
this.dept=dept;
}
publicvoidsetSalary(floatsalary)
{
this.salary=salary;
}
publicStringgetDept()
{
returnthis.dept;
}
publicfloatgetSalary()
{
returnthis.salary;
}
publicStringgetInfo()
{
return"职员信息:
"+"\n"
+"\t|-姓名:
"+super.getName()+"\n"
+"\t|-年龄:
"+super.getAge()+"\n"
+"\t|-性别:
"+super.getSex()+"\n"
+"\t|-部门:
"+this.getDept()+"\n"
+"\t|-月薪:
"+this.getSalary();
}
}
publicclassDemo01
{
publicstaticvoidmain(Stringargs[])
{
Employeew=newWorker("张三",30,"男","技术部",5000.0f);
Employeem=newManager("李四",35,"女","经理",10000.0f);
System.out.println(w.getInfo());
System.out.println(m.getInfo());
}
}
练习题二(重点来咯~~~)
分析:
只要是宠物则肯定可以向宠物商店中加入
猫 -->宠物
狗 -->宠物
宠物商店存放宠物
五种宠物?
如果说不是五种,可能是更多种了,那该如何?
5种宠物-->5个接口对象-->对象数组
//宠物
interfacePet
{
}
//宠物商店
classPetShop
{
}
//小狗
classDogimplementsPet
{
}
//小猫
classCatimplementsPet
{
}
宠物信息:
·名字
·年龄
·颜色
·价钱
还应该具备一个返回全部信息的方法。
我们继续看下面哈~
//宠物
interfacePet
{
//返回宠物的名字
publicStringgetName();
//返回宠物的年龄
publicintgetAge();
//返回宠物的颜色
publicStringgetColor();
//返回宠物的价钱
publicfloatgetPrice();
//返回宠物的全套信息
publicStringgetInfo();
}
//宠物商店
classPetShop
{
//必须有一个对象数组可以保存全部的宠物
privatePetp[]=null;
//必须定义一个当前已经加到了多少个宠物
privateintfoot=0;
//对象数组的大小,可以由程序运行时动态分配
//len表示对象数组的长度
publicPetShop(intlen)
{
//动态得开辟了对象数组空间
this.p=newPet[len];
}
//增加宠物
//假设说宠物商店里面的宠物已经够多了,那还可以继续增加吗?
publicbooleanadd(Petp)
{
if(this.foot {
//还有地方加入宠物
this.p[foot]=p;
//宠物数量增加
this.foot++;
returntrue;
}
else
{
returnfalse;
}
}
//查找宠物信息的方法
publicPet[]search(StringkeyWord)
{
//要返回的对象数组
Petpet[]=null;
//最后要根据count的内容开辟对象数组pet,把此数组返回
intcount=0;
//pet的大小是否确定呢?
//先求出符合关键字的全部宠物信息
//循环验证
for(inti=0;i {
//判断返回的信息是否有指定的关键字存在
if(this.p[i].getInfo().indexOf(keyWord)!
=-1)
{
//如果不等于-1,表示已经找到了
//就表示可以增加一个记录
count++;
}
}
//经过以上代码之后,肯定count包含了全部已经满足要求的宠物信息个数
if(count!
=0)
{
//已经有内容
pet=newPet[count];
count=0;
//还需要重新循环一次
for(inti=0;i {
//判断返回的信息是否有指定的关键字存在
if(this.p[i].getInfo().indexOf(keyWord)!
=-1)
{
//如果不等于-1,表示已经查找到了
//表示向返回的对象数组中加入内容
pet[count]=this.p[i];
}
}
//表示全部符合要求的对象数组
returnpet;
}
else
{
//表示没有查询到内容
returnnull;
}
}
}
//小狗
classDogimplementsPet
{
privateStringname;
privateintage;
privateStringcolor;
privatefloatprice;
//加入两个构造方法
publicDog(){}
publicDog(Stringname,intage,Stringcolor,floatprice)
{
this.setName(name);
this.setAge(age);
this.setColor(color);
this.setPrice(price);
}
publicvoidsetName(Stringname)
{
this.name=name;
}
publicvoidsetAge(intage)
{
this.age=age;
}
publicvoidsetColor(Stringcolor)
{
this.color=color;
}
publicvoidsetPrice(floatprice)
{
this.price=price;
}
publicStringgetName()
{
returnthis.name;
}
publicintgetAge()
{
returnthis.age;
}
publicStringgetColor()
{
returnthis.color;
}
publicfloatgetPrice()
{
returnthis.price;
}
publicStringgetInfo()
{
return"狗的信息:
"+"\n"
+"\t|-狗的名字:
"+this.name+"\n"
+"\t|-狗的颜色:
"+this.color+"\n"
+"\t|-狗的年龄:
"+this.age+"\n"
+"\t|-狗的价格:
"+this.price+"\n";
}
}
//小猫
classCatimplementsPet
{
privateStringname;
privateintage;
privateStringcolor;
privatefloatprice;
//加入两个构造方法
publicCat(){}
publicCat(Stringname,intage,Stringcolor,floatprice)
{
this.setName(name);
this.setAge(age);