`抽象方法、抽象类`

抽象方法、抽象类

抽象方法

概念

用abstract来声明,抽象方法只有方法声明而没有方法体,

抽象方法必须存在于抽象类中,而抽象类不能被实例化,因此抽象方法必须由子类来实现。

抽象类

概念

抽象类是一个不能被实例化的类,它用于定义一些通用的属性、方法,同时也可以包含抽象方法。

抽象类通过关键字"abstract"来声明,它可以包含普通的方法和成员变量,也可以包含抽象方法。

注意点

1、抽象类不能被实例化,即不能使用new关键字来创建抽象类的对象。

2、抽象方法只能存在于抽象类中,而抽象类还可以包含普通方法和成员变量

3、抽象类可以包含构造方法,但不能用于实例化对象,只能被子类调用。

4、子类继承抽象类时,必须实现抽象类中的所有抽象方法,否则子类也必须声明为抽象类。

5、抽象类可以作为其他类的基类,提供一些通用的属性和方法,而子类可以通过继承抽象类来获得这些属性和方法,并根据需要进行具体的实现。

例子

编写动物类,成员方法是动物叫声,
写三个具体的类(猫、狗、羊), 它们都是动物类的子类,并重写父类的成员方法。
编写测试类,随机产生三种具体动物,调用叫声这个方法


abstract class Animal{
	public abstract void sound();
}

class Cat extends Animal{
	@Override
	public void sound(){
		System.out.println("喵");
	}
}

class Dog extends{
	@Override
	public void sound(){
		System.out.println("汪");
	}
}

class Sheep extends{
	@Override
	public void sound(){
		System.out.println("咩");
	}
}

// 测试类
import java.util.Random;

public class Test{
	public static void main(String args[]){
		Random random = new Random();

		Animal[] animals = new Animal[]{new Cat(), new Dog(), new Sheep()};

		for(int i=0; i<animals.length; i++){
			int index = random.nextInt(3); // 随机选一个动物

			// 方式1、使用变量
			Animal randomAnimal = animals[index]; // 获取随机动物
			randomAnimal.sound()

			// 方式2、不使用变量 (直接调用)  
			animals[index].sound();
		}
	}
}

你可能感兴趣的:(java,java)