[02] 抽象类

摘要:
如果一个类中没有包含足够的信息来描绘一个具体的对象,这个类应该使用abstract关键字设置为抽象类。abstractclass类名{成员列表}11abstractclass类名{成员列表}既然我们说抽象类没有足够的信息去描述具体对象,那么显然,抽象类不能被实例化,只是为了定义子类的共同特征。但是抽象类是可以有构造方法的,这主要是让子类调用。

1、抽象类的声明

我们举过例子如Cat类继承Animal类,但是Cat你可以知道是具体什么样,两个尖耳朵,身体柔软娇小,喵喵叫,可是你告诉我,Animal长什么样呢?

如果一个类中没有包含足够的信息来描绘一个具体的对象,这个类应该使用abstract关键字设置为抽象类。
【访问权限】 abstract class 类名 { 成员列表 } 
1
1
【访问权限】 abstract class 类名 { 成员列表 } 

既然我们说抽象类没有足够的信息去描述具体对象,那么显然,抽象类不能被实例化,只是为了定义子类的共同特征。但是抽象类是可以有构造方法的,这主要是让子类调用。



2、抽象方法

抽象类中可以有具体实现的方法,也可以有抽象方法,即仅作定义,而由子类去提供具体实现的方法
【访问权限】 abstract 返回值类型 方法名称( 参数列表 );
1
1
【访问权限】 abstract 返回值类型 方法名称( 参数列表 );

需要注意的是:
  • 含有抽象方法的类,一定需要定义为抽象类
  • 子类要求必须实现父类的抽象方法
  • 构造方法和静态方法不可以修饰为abstract
  • 抽象类可以有成员属性和非抽象的成员方法



3、示例

//抽象类,父类
public abstract class Animal {
    private String name;

    protected Animal(String name) {
        this.name = name;
    }

    public abstract String eat();

}

//子类
public class Cat extends Animal{

    private int age;

    public Cat(String name, int age) {
        super(name);
        this.age = age;
    }

    @Override
    public String eat() {
        return "猫吃东西,吃猫粮";
    }
}
x
1
//抽象类,父类
2
public abstract class Animal {
3
  private String name;
4
5
  protected Animal(String name) {
6
    this.name = name;
7
   }
8
9
  public abstract String eat();
10
11
}
12
13
//子类
14
public class Cat extends Animal{
15
16
  private int age;
17
18
  public Cat(String name, int age) {
19
    super(name);
20
    this.age = age;
21
   }
22
23
  @Override
24
  public String eat() {
25
    return "猫吃东西,吃猫粮";
26
   }
27
}


免责声明:文章转载自《[02] 抽象类》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇51nod——1391 01串(字符串、前缀和)数据仓库基础(七)Informatica PowerCenter介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

(转载)DevExpress ASPxGridView 使用文档四:数据源

转载请注明出处:http://surfsky.cnblogs.com/ ----------------------------------------------------------- DataSource 支持的数据源--     DataTable--     IList--     BindingList--     XXXDataSource...

签名:实现参数字典排序,然后拼接为url参数形式

在很多地方请求参数需要做处理例如: 步骤 1.参数字典排序。 2.拼接字符。 /// <summary> ///生成签名 /// </summary> /// <param name="paramlst">参数列表</param>...

jquery动态实现填充下拉框

 当点下拉框时动态加载后台数据。 后台代码 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8...

wxpython ItemContainer

ItemContainer 是 很多可以添加string item的部件的父类,封装很多有用的方法,可以用来获取部件的被选中item 的string 如wx.ListBox ,wx.CheckListBox,wx.Choice,wx.ComboBox。 这些部件可以添加string ,并且内部对它们索引访问。  string GetString(self,...

BaseController 的使用

为了提现代码的高可用性,我们可以常见的把dao层进行抽取,service ,但是很少看见有controller的抽取,其实dao层也是可以被抽取的。 首先我们定义一个BaseController接口 package com.zhan.common.controller.base; import com.zhan.common.domain.base....

java Process在windows的使用汇总(转)

最常用的是ant(java工程中流行),maven,及通用的exec(只要有shell脚本如.sh,.bat,.exe,.cmd等).而其实前两者不容易出错,后者却遇到了以下问题:Caused by: java.io.IOException: Cannot run program "DailyBuild.bat"...java.io.IOException...