java 第36节 抽象类概述与使用
Posted 岑亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 第36节 抽象类概述与使用相关的知识,希望对你有一定的参考价值。
2016-06-29
1 抽象类的定义
抽象类是为子类提供一个规范。
修饰符 abstract 类名{
//类体
修饰符 abstract 返回值类型 方法名(参数列表);
}
抽象方法没有方法体:public abstract void test();
普通方法有方法体: public void test(){//方法体内的代码};
1、定义一个类,如果这个类是抽象类,那么这个类中至少有一个抽象方法。
2、抽象类的方法不一定是抽象方法,但是含义抽象方法的类一定是抽象类。
package com.java1995; /** * 抽象类:猫科动物类 * @author Administrator * */ public abstract class Feline { /** * 封装 */ private int legCount=4;//定义腿的数量 private String headShape="round";//定义脑袋的形状 private boolean meatEater=true;//定义是否为食肉动物,默认为是 /** * 抽象方法:捕食 * @param animal */ public abstract void catchAnimal(Animal animal); /** * 普通方法:叫喊 */ public void cry(){ System.out.println("动物在狂吼"); } /** * 封装的实现 * @return */ public int getLegCount() { return legCount; } public void setLegCount(int legCount) { this.legCount = legCount; } public String getHeadShape() { return headShape; } public void setHeadShape(String headShape) { this.headShape = headShape; } public boolean isMeatEater() { return meatEater; } public void setMeatEater(boolean meatEater) { this.meatEater = meatEater; } }
2 抽象类的使用
package com.java1995; /** * 父类、被被捕食类:动物类 * @author Administrator * */ public class Animal { }
package com.java1995; /** * 子类、被被捕食类:老鼠类 * @author Administrator * */ public class Mouse extends Animal { }
package com.java1995; /** * 抽象类的子类:老虎 * @author Administrator * */ public class Tiger extends Feline{ /** * 重写抽象方法:老虎的捕食 */ @Override public void catchAnimal(Animal animal) { // TODO Auto-generated method stub System.out.println("老虎在捕食"); } public static void main(String[] args) { Mouse mouse=new Mouse(); Tiger t=new Tiger(); t.catchAnimal(mouse); } }
package com.java1995; /** * 抽象类的子类:猫 * @author Administrator * */ public class Cat extends Feline{ /** * 重写抽象方法:猫的捕食 */ @Override public void catchAnimal(Animal animal) { // TODO Auto-generated method stub //首先要判断捕食的animal是否为老鼠,如果是,可以捕食 if(animal instanceof Mouse){ System.out.println("猫正在捕食老鼠"); }else{ System.out.println("猫不能捕食它"); } } public static void main(String[] args) { Mouse mouse =new Mouse(); Cat cat=new Cat(); cat.catchAnimal(mouse); } }
@Override 用来检测是否重写成功。
1、一个类继承了抽象类,就必须重写该抽象类的所有抽象方法。
2、如果有一个类没有重写抽象类的抽象方法,那么这个类也要定义为抽象类。
package com.java1995; /** * 抽象方法类 * @author Administrator * */ public abstract class Test { /** * 抽象方法 */ public abstract void test1(); public abstract void test2(); }
package com.java1995; /** * 抽象方法类的子类 * @author Administrator * */ public class SubTest extends Test{ /** * 一个类继承了抽象类,就必须重写该抽象类的所有抽象方法 * @Override用来检测是否重写成功。 */ @Override public void test1() { // TODO Auto-generated method stub System.out.println("方法1"); } @Override public void test2() { // TODO Auto-generated method stub System.out.println("方法2"); } }
package com.java1995; /** * 如果有一个类没有重写抽象类的抽象方法,那么这个类也要定义为抽象类 * @author Administrator * */ public abstract class AbstractTest1 { public abstract void test(); public void test2(){ System.out.println("这是普通方法"); } }
【参考资料】
以上是关于java 第36节 抽象类概述与使用的主要内容,如果未能解决你的问题,请参考以下文章
阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第2节 抽象类_9_接口的私有方法定义
阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第2节 抽象类_5_接口的默认方法定义
阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第2节 抽象类_14-抽象的概念