现在的位置: 首页 > 综合 > 正文

抽象类简析

2019年09月19日 ⁄ 综合 ⁄ 共 1478字 ⁄ 字号 评论关闭


类:是用来描述事物的;
抽象类:是用来描述不具体的事物。
 一、例如:猫和狗
          猫:
             行为:
                   吃(鱼)
                   抓老鼠
         狗:
             行为:
                   吃(骨头)
                   看家
       分析: 发现猫和狗中有共性的内容,即它们都有“吃”的行为,既然有共性的内容,就可以抽取出单独一个类,但是狗和猫属于2类不同的事物,它们之间没有继承关系,而且他们虽然都有“吃”的行为,但是吃的东西却不一样,这时候需要的就不仅仅是普通的类, 而是——抽象类。
                   因为狗和猫都属于动物,把狗和猫的共性内容——“吃”抽取定义到动物类中即可,在动物类中就无法明确具体吃什么,所以就不写了。

abstract class Animal
{
	abstract private void eat();	//抽象方法不需要写方法体

}

class Cat extends Animal
{
	void eat()
	{
		System.out.println("吃鱼");
	}
	void catchMouse()
	{
		System.out.println("抓老鼠");
	}
}
class Dog extends Animal 
{
	void eat()
	{
		System.out.println("啃骨头");
	}
	void lookHome()
	{
		System.out.println("看家");
	}
}

 二、抽象类的作用:
                  类是描述事物,父类是干什么的?父类是描述这个事物体系中的共性内容。
                  当在定义一个父类的时候,父类只知道子类的具体功能是什么,可以无法描述清楚
                  子类的功能体时,这时父类中的这个功能就可以使用抽象方法来描述,当一个
                  类中有了抽象方法,那么这个类就变成了抽象类。

 三、抽象类的注意事项:
         1、抽象类一定是父类吗?
                    是,抽象类中会有抽象方法,而这些方法是没有方法体的,需要子类继承抽象类,并且复写这些抽象方法。如果子类继承了抽象类,并没有把抽象类中的抽象方法复写完,这时这个子类仍然是抽象类。

         2、抽象类中有构造方法吗,它能创建对象吗?
                   有,但是它不能创建对象。抽象类中一般都会有抽象方法,而抽象方法是没有方法体的方法,如果可以创建对象,通过对象就可以调用方法,那么调用一个没有方法体的方法,没有任何意义。抽象类中的构造方法虽然不能给自己创建对象,但是它是用来给子类进行初始化的。

         3、抽象类中可以没有抽象方法吗?
                   可以。它存在只有一个价值,就是不让创建这个类的对象。它主要用于设计模式中的适配器模式

         4、抽象关键字和那些关键字不能共存?
                   static:因为静态修饰的内容是可以通过类名直接调用,而一个抽象方法被静态了,使用类名调用这个抽象的方法没有意义;
                   final:final修饰的方法子类是无法复写的,而abstract修饰的方法要求子类必须复写;
                   private:私有的内容子类无法得到,则不能满足abstract修饰的方法要求子类必须复写。

抱歉!评论已关闭.