java抽象类
2016-05-05 13:34
531 查看
最近开始学习java,由于有过oc,c++语言的基础,学习期java来相对比较轻松,这也验证了一句话,面向对象的语言基本上是相通到的。下面我们进入正题。
抽象类和接口是面向对象程序设计的两种十分重要的机制,与类比较,是更高层次的抽象,两者在本质上具有相似之处。
抽象类
在面向对象的程序设计中,所有对象都是通过类来描述的(java是一门纯面向对象的编程语言),但并不是所有类都是用来描述对象的。一个类中没有包含足够的信息来描述一个具体的对象,我们称这样的类为抽象类。
下面来看一下在java中是如何定义一个抽象类的:
java中抽象类有以下几种使用规则:
1.abstract关键字可以修饰方法以及类,被abstract关键字修饰的类即抽象类,同样被abstract关键字修饰的方法就是抽象方法,抽象方法只有方法的声明,没有方法体,这是要特别注意的;
2.抽象类无法实例化一个对象,只能声明引用变量(设Animal是一个抽象类那么 Animal animal;这是合法的但是 Animal animal = new Animal();这样写是非法的);
3.含有抽象方法的类必须声明为抽象类,抽象类可以不含有抽象方法;
4.定义抽象类的主要目的是在定义新类时继承该抽象类。通过继承由其子类来发挥作用,当子类继承时,必须实现抽象类中的所有抽象方法,否则子类也要声明成抽象类。
下面我们来看一个运用抽象类的例子:
运行打印输出如下
抽象类和接口是面向对象程序设计的两种十分重要的机制,与类比较,是更高层次的抽象,两者在本质上具有相似之处。
抽象类
在面向对象的程序设计中,所有对象都是通过类来描述的(java是一门纯面向对象的编程语言),但并不是所有类都是用来描述对象的。一个类中没有包含足够的信息来描述一个具体的对象,我们称这样的类为抽象类。
下面来看一下在java中是如何定义一个抽象类的:
<#这里是访问权限#> abstract class <#这里是类名#>{ //通过abstract关键字来定义一个 类为抽象类 <#这里是访问权限#> <#这里是参数类型#> <#这里是参数名#>;//参数声明 <#这里是访问权限#> abstract <#这里是函数返回值类型#> <#这里是函数名#> (<#形参列表#>);//声明方法,注意要用abstract关键字修饰且没有方法体 }
java中抽象类有以下几种使用规则:
1.abstract关键字可以修饰方法以及类,被abstract关键字修饰的类即抽象类,同样被abstract关键字修饰的方法就是抽象方法,抽象方法只有方法的声明,没有方法体,这是要特别注意的;
2.抽象类无法实例化一个对象,只能声明引用变量(设Animal是一个抽象类那么 Animal animal;这是合法的但是 Animal animal = new Animal();这样写是非法的);
3.含有抽象方法的类必须声明为抽象类,抽象类可以不含有抽象方法;
4.定义抽象类的主要目的是在定义新类时继承该抽象类。通过继承由其子类来发挥作用,当子类继承时,必须实现抽象类中的所有抽象方法,否则子类也要声明成抽象类。
下面我们来看一个运用抽象类的例子:
/** * Animal类,所有动物类的抽象父类 * * */ public abstract class Animal { int legs; public Animal (int legs) { this.legs = legs; } public abstract void walk(); public abstract void eat(); }
/** * Spider类,继承自Animal类 * * */ public class Spider extends Animal { int legs; public Spider(int legs) { super(legs); this.legs = legs; System.out.println("Spider has "+ legs +" legs"); } @Override public void walk() { System.out.println("Spider is walking!"); } @Override public void eat() { System.out.println("Spider is eating!"); } }
/** * AnimalTest测试代码 * * */ public class AnimalTest { public static void main(String []args) { AnimalTest animalTest = new AnimalTest(); animalTest.spiderTest(); } public void spiderTest() { Spider splider = new Spider(8); splider.walk(); splider.eat(); } }
运行打印输出如下
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序