Java编程 实现类的继承与多态 写一个动物类。成员变量为动物的种类,成员方法是动物叫声。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java编程 实现类的继承与多态 写一个动物类。成员变量为动物的种类,成员方法是动物叫声。相关的知识,希望对你有一定的参考价值。

感觉写得够详细了,如果不懂M我abstract class Animal

//动物的种类用变量n表示
String n;
//动物的声音用变量s表示
String s;
//在这里声明了一个抽象方法talk
public abstract String talk();

//这里Cat类继承自Animal类,体现了类的继承的特性
class Cat extends Animal

public Cat(String n,String s)

this.n=n;
this.s=s;

//在这里复写了talk方法
public String talk()

return "动物--》》"+this.n+"\n晚上不停地-->>"+this.s;


public class Hello

public static void main(String[] args)

//在这里用Animal类实例化一个Cat对象,体现了类的多态性
Animal an=new Cat("猫","喵~喵!");
System.out.println(an.talk());

/**运行结果:*/
参考技术A 编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?定义一个动物类,
在动物类(animal)中有一个叫的抽象方法。 写两个子类,一个猫一个狗,继承自
动物类,并实现相应的抽象方法。怎么实现?

java多态性理解

一  多态的基础是继承,重写,父类的引用指向子类对象,接口是多态最常见的实现方式。

概念性的东西,先说这么多,以上的都是重点,  继承 ,重写 ,父类的引用指向子类对象。

下面贴上代码  ,一步步来看到底什么是多态。

父类  动物类,然后会有Dog和Cat类继承此类

public class DongWu {	
	
		public void eat(){
			System.out.println("动物会吃东西");
		}
		
		public void age(){
			System.out.println("动物的年龄");
		}

}

 Dog类

public class Dog extends DongWu {
	//重写父类的eat()方法
	public void eat(){
		System.out.println("狗吃骨头");
	}
	//重写父类的age()方法
	public void age(){
		System.out.println("10岁的狗狗");
	}
}

  Cat类

public class Cat extends DongWu {
	//重写父类的eat()方法
	public void eat(){
		System.out.println("猫吃鱼");
	}
	//重写父类的age()方法
	public void age(){
		System.out.println("5岁的猫咪");
	}
}

 如果平时,我们调用cat和dog累中的两个方法,需要这样写。

 为每一个类指定一个对应的方法,这样的工作太繁琐了,我们可以改变一下写法

public class Test {
		public static void main(String[] args) {
			//new出两个类的实例对象
			Cat c=new Cat();
			Dog d=new Dog();
			//new出本类对象test 没有使用static
			Test test=new Test();
			test.test(c);
			test.test(d);
		}
		public  void test(Dog d){
			d.age();
			d.eat();			
		}
		public  void test(Cat c){
			c.age();
			c.eat();			
		}
		
}

  将 原来的  test方法中的参数类型改成了父类的类型,最后的结果是一样的。

  编译类型是DongWu,运行时的实际类型变成了  具体的类型 比如例子中的 d,d,dw

  这样就不用为每一个类型写一个方法,只需要写一个方法,灵活方便,程序运行时根据传入的具体参数类型去执行相对应的方法

  对于  

DongWu dw=new Cat();这种方式new出的实例对象,只能调用父类中定义过的方法,子类中新增加的方法是无法调用的。
public class Test {
		public static void main(String[] args) {
			//new出两个类的实例对象
			Cat c=new Cat();
			Dog d=new Dog();
			//父类也就是DongWu的 引用 指向了子类的实例对象 (new Cat())
			DongWu dw=new Cat();
			//new出本类对象test 没有使用static
			Test test=new Test();
			test.test(c);
			test.test(d);
			test.test(dw);
		}
		//将参数类型定义为父类的类型
		public  void test(DongWu dw){
			dw.age();
			dw.eat();			
		}
		

  

以上是关于Java编程 实现类的继承与多态 写一个动物类。成员变量为动物的种类,成员方法是动物叫声。的主要内容,如果未能解决你的问题,请参考以下文章

Java 中的多态,一次讲个够之接口实现关系中的多态

Java面向对象之多态

Java面向对象之多态

Java面向对象编程:封装,继承,多态

JAVA基础8-面向对象3

关于Java多态