Java 抽象类的详解
2016-07-16 14:33
381 查看
1.概念
当描述一个类的时候,如果不能确定功能函数如何定义,那么该类就可以定义为抽象类,功能函数应该描述为抽象函数。
2.实现方式
(1)定义类的方法,无法确定方法体,不写方法体
(2)根据提示在方法加入abstract修饰
(3)根据提示将类加入abstract修饰
3.特点
(1)有抽象函数的类,该类一定是抽象类。
(2)抽象类中不一定要有抽象函数。
(3)抽象类不能使用new创建对象
创建对象,使用对象的功能,抽象类的方法,没有方法体。
(4)抽象类主要为了提高代码的复用性,让子类继承来使用。
(5)编译器强制子类实现抽象类父类的未实现的方法。
可以不实现,前提是子类的也要声明为抽象的。
4.优点
(1)提高代码复用性
(2)强制子类实现父类中没有实现的功能
(3)提高代码的扩展性,便于后期的代码维护
5.抽象类的主要几个问题
(1)抽象类不能创建对象,那么抽象类中是否有构造函数?
抽象类中一定有构造函数。主要为了初始化抽象类中的属性。通常由子类实现。
看下面代码:
(2)final和abstract是否可以同时修饰一个类?
一定不能同时修饰。
6.抽象类注意的细节
抽象类可以没有抽象方法(java.awt.*的类就是这样子操作的)。
抽象类可以继承普通类与抽象类,但是只能继承一个
抽象类可以实现接口~可以实现多个接口
抽象类不能直接使用类名创建实例,但是有构造方法,构造方法是让子类进行初始化。
抽象类一定有构造方法。
abstract与其他修饰符的关系:
final与abstract不能共存
final:它的作用 修饰类代表不可以继承 修饰方法不可重写
abstract修饰类就是用来被继承的,修饰方法就是用来被重写的。
static static修饰的方法可以用类名调用,
对于abstract修饰的方法没有具体的方法实现,所有不能直接调用,
也就是说不可以与static共存。
private
private修饰的只能在本类中使用,
abstract方法是用来被子类进行重写的,有矛盾
所有不能共存.
当描述一个类的时候,如果不能确定功能函数如何定义,那么该类就可以定义为抽象类,功能函数应该描述为抽象函数。
2.实现方式
(1)定义类的方法,无法确定方法体,不写方法体
(2)根据提示在方法加入abstract修饰
(3)根据提示将类加入abstract修饰
3.特点
(1)有抽象函数的类,该类一定是抽象类。
(2)抽象类中不一定要有抽象函数。
(3)抽象类不能使用new创建对象
创建对象,使用对象的功能,抽象类的方法,没有方法体。
(4)抽象类主要为了提高代码的复用性,让子类继承来使用。
(5)编译器强制子类实现抽象类父类的未实现的方法。
可以不实现,前提是子类的也要声明为抽象的。
4.优点
(1)提高代码复用性
(2)强制子类实现父类中没有实现的功能
(3)提高代码的扩展性,便于后期的代码维护
5.抽象类的主要几个问题
(1)抽象类不能创建对象,那么抽象类中是否有构造函数?
抽象类中一定有构造函数。主要为了初始化抽象类中的属性。通常由子类实现。
看下面代码:
abstract class Animal { String name; // 抽象类可以有构造函数 Animal() { } Animal(String name) { this.name = name; } abstract void shout(); } class Dog extends Animal { Dog() { } Dog(String name) { super(name); } void shout() { System.out.println("旺旺"); } } class Demo3 { public static void main(String[] args) { // 抽象类不能创建对象 // Animal a=new Animal(); Dog d = new Dog("旺财"); System.out.println(); } }
(2)final和abstract是否可以同时修饰一个类?
一定不能同时修饰。
6.抽象类注意的细节
抽象类可以没有抽象方法(java.awt.*的类就是这样子操作的)。
抽象类可以继承普通类与抽象类,但是只能继承一个
抽象类可以实现接口~可以实现多个接口
抽象类不能直接使用类名创建实例,但是有构造方法,构造方法是让子类进行初始化。
抽象类一定有构造方法。
abstract与其他修饰符的关系:
final与abstract不能共存
final:它的作用 修饰类代表不可以继承 修饰方法不可重写
abstract修饰类就是用来被继承的,修饰方法就是用来被重写的。
static static修饰的方法可以用类名调用,
对于abstract修饰的方法没有具体的方法实现,所有不能直接调用,
也就是说不可以与static共存。
private
private修饰的只能在本类中使用,
abstract方法是用来被子类进行重写的,有矛盾
所有不能共存.
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Python动态类型的学习---引用的理解
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序