java abstract基础
来源:互联网 发布:装甲战争99a数据 编辑:程序博客网 时间:2024/05/29 07:58
Java实现抽象类有两种方法:abstract以及interface。此处只记录abstract的用法。
1.先谈谈为什么需要抽象类
在现实生活中,我们在描述一件物品时,通常是指描述一件具体的物品,例如碗、碟、勺,他们都有自己的特征和作用,这种具体的事物,可以称为实体对象。现实中也存在另一种不能称为物品而是作为某一类物品的总结和概括,例如瓷器、怪物,我们脑海里无法形成某一个具体的事物,只是知道这是对某一类事物的总结和概括。我们可以把碗碟勺理解成实体类,它们都可以被实例化。而瓷器就是对碗碟勺的抽象,即抽象类,它有一个很明显的特征:不能实例化。我们知道,任何一个对象都可以通过类来描绘,但是反过来,并不是所有类都是用来描绘对象的,抽象类就是用来描绘那些不能实例化的抽象事物。
2.Java对抽象类的支持
在java中声明抽象类,只需在在类前加上abstract修饰符。使用abstract修饰的抽象类可以有自己的数据成员和方法(包括抽象和非抽象的),并且在继承时可以重写和修改,但是正如前面所说,它不能被实例化,也就是说我们不能构造这个类的对象,它只能被子类继承。当然继承的子类也可以是抽象类。注意abstract修饰的抽象类可以没有抽象方法,但是有抽象方法的类必须用abstract修饰。如下定义了一个简单的抽象类china,它有自己的变量和方法,其中f3是抽象方法,抽象方法没有具体的实现。
public abstract class China{
private int x;
public float y;
private final void f1(){
return;
}
public void f2(){
return;
}
public abstract void f3();
}
假如要使用上面定义的抽象类,必须通过继承,假如继承的子类不是抽象类,那么子类必须要实现基类中的抽象方法。如下
public class EntityChina extends China{
public EntityChina (){
}
@Override
public void f3() {
}
}
此时就可以通过构造方法来实例化EntityChina ,并且可以调用f2方法。
我们前面说过,继承自抽象方法的子类也可以声明为抽象方法,他可以重写基类中的非抽象方法(重写抽象方法根本没有意义,因为没有实现),也可以定义新的抽象方法。如下
public abstract class AbsChina extends China{
public void f2(){
System.out.println("extends from China");
return;
}
public abstract void f4();
}
- java基础:abstract
- java abstract基础
- abstract关键字--Java基础053
- Java基础之abstract关键字
- JAVA基础:abstract class \ interface
- Review-Java基础--抽象类(abstract)
- abstract的使用案例--Java基础054
- java基础--多态,static final abstract interface
- java abstract
- java abstract
- java----abstract
- 06.(java基础)面试题--03 abstract的用法,以及abstract和interface的异同
- Java基础之abstract class与interface,Override与Overload
- Java基础复习:abstract关键字&抽象类&模版模式
- java基础--static、final、abstract修饰符小结
- 【java基础】abstract抽象类、方法的特点及注意事项
- Java abstract类和abstract方法
- Java的abstract类和abstract方法
- 火的礼物:人类与计算技术的终极博弈(第4版)——互动出版网
- ArcGIS教程:创建正态栅格
- apache Symbolic link not allowed or link target not accessible
- erl_string-字符串匹配的Boyer-Moore算法
- mybatis的再次深入理解
- java abstract基础
- 部署和搭建 svn 服务器
- Linux-crontab
- 找出一组数中只出现一次的元素
- 移动端 webgl 对比 canvas 性能
- ubuntu memcached安装与配置
- 3.仿微信--注册界面 布局实现
- hdu 5446 Unknown Treasure (Lucas定理+CRT+快速乘)
- Struts2.3+Spring3.2.8+Hibernate4.1全注解配置 2014-04-24 11:45:53