扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
比较基础,给你个例子的思路:
创新互联建站自2013年起,是专业互联网技术服务公司,拥有项目网站制作、做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元竹山做网站,已为上家服务,为竹山各地企业和个人服务,联系电话:028-86922220
1、创建抽象动物类:AbstractAnimal.java:public AbstractAnimal{...},其中包含属性String name;(自行设置getter和setter),包含抽象方法public void walk();
2、创建狗类Dog.java,继承抽象动物类:public Dog extends AbstractAnimal{...},同时必须重写行走方法:
@Override
public void walk(){
System.out.println(super.name + "用四条腿走路");
}
3、创建人类People.java,继承抽象动物类:public Peopleextends AbstractAnimal{...},同时必须重写行走方法:
@Override
public void walk(){
System.out.println(super.name + "用两条腿走路");
}
4、编写测试类
private static void main(String[] args){
AbstractAnimal dog = new God();
dog.setName("来福");
dog.walk();
AbstractAnimal people = new People();
people.setName("张三");
people.walk();
}
package
baiduwenti;abstract
class
MyAnimal
{//抽象类
private
String
type;
MyAnimal(String
str){//构造方法
type
=
str;
}
public
abstract
void
voice();//抽象方法}class
MyDog
extends
MyAnimal{//MyDog继承MyAnimal
private
String
name;
MyDog(String
str,String
n)
{//构造方法
super(str);
name
=
n;
//
TODO
Auto-generated
constructor
stub
}
public
void
voice(){//实现抽象类中的抽象方法
System.out.println("the
voice
of
a
dog.");
}}class
MyCat
extends
MyAnimal{
private
String
name;
MyCat(String
str,String
n){
super(str);
name
=
n;
}
public
void
voice(){
System.out.println("the
voice
of
cat.");
}}public
class
Cx3110{
public
static
void
main(String[]
args){
MyAnimal
dog
=
new
MyDog("狗","旺财");//创建一个MyAnimal对象,并用MyDog实例化
dog.voice();//调用方法
MyAnimal
cat
=
new
MyCat("猫","旺运");//创建一个MyAnimal对象,并用MyCat实例化
cat.voice();
}}
abstract class Animal{
String type;
public Animal(String type){
this.type=type;
}
public abstract void Talk();
public void showInfo(){Talk();}
}
class Dog extends Animal{
String name;
public Dog(String type,String name){
super(type);
this.name=name;
}
public void Talk(){
System.out.println("此动物是:"+name+",此动物属于:"+type);
}
}
class Cat extends Animal{
String name;
public Cat(String type,String name){
super(type);
this.name=name;
}
public void Talk(){
System.out.println("此动物是:"+name+",此动物属于:"+type);
}
}
public class Diy_5_2_1{
public static void main(String[] args){
Dog doggie=new Dog("犬科动物","德国黑贝");
Cat kitty=new Cat("猫科动物","波斯猫");
doggie.showInfo();
kitty.showInfo();
}
}
你明白多态就明白这个问题了,给你举个例子吧:比如有个抽象类叫动物,他有“叫”的动作,继承他的类都是普通类,有猫、狗...各种动物,他们实现叫的方法都不同。现在有个需求:就是实现各种动物“叫”的动作,为了动态实现,就需要把动物做为形参传过去,依照多态的特性“任何父类出现的地方,都可以替换成子类”,我们就可以将真正实现了“叫”这个方法的实现类传过去而执行实现类里的方法了,以下是实例代码:
//动物类
public abstract class Animal(){
public void shout();
}
//实现类:狗
public class Dog extends Animal(){
public void shout(){
System.out.println("汪");
}
}
//实现类:猫
public class Cat extends Animal(){
public void shout(){
System.out.println("瞄");
}
}
//执行类
public class Opration(){
//定一个以Animal为参数的方法
public void ExecuteTest(Animal animal){
//只调用“叫”的方法
animal.shout();
}
}
//测试类
public class Test(){
//实现main()
public static void main(String[] args) {
//实例化
Dog dog=new Dog();
Cat cat=new Cat();
Opration op=new Opration();
//接下来要用多态了
//这里是狗“叫”的放法
op.ExecuteTest(dog);
//这里是猫“叫”的方法
op.ExecuteTest(cat);
}
}
希望能对你有帮助。
我这没用任何工具,要是有错误,请见谅。
{
private String msg="";
public void setMsg(String msg){ this.msg=msg; }
void fly()
{
System.out.println(this.msg);
}
}
//test class
public void main(String[] args)
{
animal a=new animal();
a.name = "哈哈";
a.age = 12;
a.color = "red";
System.out.println(a);
//++++++
bird daYan = new bird();
daYan.name = "大雁"
daYan.setMsg(“一会排成个一字,一会排成个人字”);
daYan.fly();
bird ji = new bird();
ji.name = "鸡";
ji.setMsg(“md老子不会飞”);
ji.fly();
//++++++++
}
我写了一个,内容比较简单的。代码如下:public class AnimalTest {
Animal animal;
public void eat(Animal animal){
animal.eat();
}
public void walk(Animal animal){
animal.walk();
}
public static void main(String args[]){
Animal animal=new Animal("animal");
Wolf w=new Wolf("wolf");
Goat g=new Goat("goat");
AnimalTest at=new AnimalTest();
at.eat(animal);
at.eat(w);
at.eat(g);
at.walk(animal);
at.walk(w);
at.walk(g);
}
}
class Animal {
String name;
public Animal(String name){
this.name=name;
}
public Animal(){}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void eat(){
System.out.println("animal eat");
}
public void walk(){
System.out.println("animal walk");
}
public String toString(){
return name;
}
}class Wolf extends Animal {
public Wolf(String name){
super(name);
}
public Wolf(){}
public void eat(){
System.out.println("wolf eat meat");
}
public void walk(){
System.out.println("wolf walk");
}
public String toString(){
return name;
}
}class Goat extends Animal {
public Goat(String name){
super(name);
}
public Goat(){}
public void eat(){
System.out.println("goat eat grass");
}
public void walk(){
System.out.println("goat walk");
}
public String toString(){
return name;
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流