Java中的抽象类
2015-08-19 22:27
645 查看
1. 抽象类:包含一个抽象方法的类。
抽象方法:只声明而未实现的方法称为抽象方法,抽象方法必须使用abstract关键字声明。
抽象类的定义格式:
abstract class 抽象类名称{
属性;
访问权限 返回值类型 方法名称(参数) {//普通方法
[return 返回值 ] ;
}
访问权限 abstract 返回值类型 方法名称(参数);//抽象方法
//在抽象方法中是没有方法体的
}
2. 抽象类的定义和使用规则
(1) 包含一个抽象方法的类必须是抽象类;
abstract class A{//定义了一个抽象类
public static final String FLAG = "CHIAN";//全局常量
private String name = "逆水百川";//定义一个普通的属性
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public abstract void print();//定义抽象方法
}
从定义上看,抽象类就是比普通类多一个抽象方法!
(2)抽象类和抽象方法都要使用abstract关键字声明;
public class Abstract {
public static void main(String[] args) {
A a = new A();
}
}
abstract class A{//定义了一个抽象类
public static final String FLAG = "CHIAN";//全局常量
private String name = "逆水百川";//定义一个普通的属性
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public abstract void print();//抽象方法
}
抽象类的定义虽然跟普通类非常相似,但是却不能直接实例化。因为他不满足第(4)点!
(3)抽象方法只需要声明而不需要实现,抽象类中不一定有抽象方法,但是有抽象方法的类一定为抽象类!
public abstract void print();//抽象方法
(4)抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法;
(5) 抽象类能不能使用final关键字声明?
不能,因为final关键字声明的类不能有子类
而抽象类是必须有子类的。
(6)抽象类中是允许存在构造方法的,因为抽象类依然使用的是类的继承关系,而且抽象类中也存在各个属性,所以子类在实例化之前肯定是先要对父类进行实例化。
举例:
public class Abstract2 {
public static void main(String[] args) {
N n = new N();
}
}
abstract class X{
public X(){
System.out.println("父类为抽象类,父类中的构造方法!!");
}
}
class N extends X{
public N(){
System.out.println("子类中的构造方法!");
}
}
运行结果:
父类为抽象类,父类中的构造方法!!
子类中的构造方法!
7. 抽象类不允许实例话对象。
举例:
public class Abstract2 {
public static void main(String[] args) {
N n = new N();
}
}
abstract class X{
public X(){
System.out.println("父类为抽象类,父类中的构造方法!!");
}
}
abstract class N extends X{
public N(){
System.out.println("子类中的构造方法!");
}
}
以上代码是错误的,因为抽象类不能实例化!!
8. 抽象类使用的时候一定要有子类继承,子类仍然是使用extends关键字继承一个抽象类,同样也是单继承的关系,一个子类不能同时继承多个抽象类。
抽象类不能使用final关键字声明。抽象类允许有构造方法,并且完全符合子类对象的实例化过程。
抽象方法:只声明而未实现的方法称为抽象方法,抽象方法必须使用abstract关键字声明。
抽象类的定义格式:
abstract class 抽象类名称{
属性;
访问权限 返回值类型 方法名称(参数) {//普通方法
[return 返回值 ] ;
}
访问权限 abstract 返回值类型 方法名称(参数);//抽象方法
//在抽象方法中是没有方法体的
}
2. 抽象类的定义和使用规则
(1) 包含一个抽象方法的类必须是抽象类;
abstract class A{//定义了一个抽象类
public static final String FLAG = "CHIAN";//全局常量
private String name = "逆水百川";//定义一个普通的属性
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public abstract void print();//定义抽象方法
}
从定义上看,抽象类就是比普通类多一个抽象方法!
(2)抽象类和抽象方法都要使用abstract关键字声明;
public class Abstract {
public static void main(String[] args) {
A a = new A();
}
}
abstract class A{//定义了一个抽象类
public static final String FLAG = "CHIAN";//全局常量
private String name = "逆水百川";//定义一个普通的属性
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public abstract void print();//抽象方法
}
抽象类的定义虽然跟普通类非常相似,但是却不能直接实例化。因为他不满足第(4)点!
(3)抽象方法只需要声明而不需要实现,抽象类中不一定有抽象方法,但是有抽象方法的类一定为抽象类!
public abstract void print();//抽象方法
(4)抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法;
(5) 抽象类能不能使用final关键字声明?
不能,因为final关键字声明的类不能有子类
而抽象类是必须有子类的。
(6)抽象类中是允许存在构造方法的,因为抽象类依然使用的是类的继承关系,而且抽象类中也存在各个属性,所以子类在实例化之前肯定是先要对父类进行实例化。
举例:
public class Abstract2 {
public static void main(String[] args) {
N n = new N();
}
}
abstract class X{
public X(){
System.out.println("父类为抽象类,父类中的构造方法!!");
}
}
class N extends X{
public N(){
System.out.println("子类中的构造方法!");
}
}
运行结果:
父类为抽象类,父类中的构造方法!!
子类中的构造方法!
7. 抽象类不允许实例话对象。
举例:
public class Abstract2 {
public static void main(String[] args) {
N n = new N();
}
}
abstract class X{
public X(){
System.out.println("父类为抽象类,父类中的构造方法!!");
}
}
abstract class N extends X{
public N(){
System.out.println("子类中的构造方法!");
}
}
以上代码是错误的,因为抽象类不能实例化!!
8. 抽象类使用的时候一定要有子类继承,子类仍然是使用extends关键字继承一个抽象类,同样也是单继承的关系,一个子类不能同时继承多个抽象类。
抽象类不能使用final关键字声明。抽象类允许有构造方法,并且完全符合子类对象的实例化过程。
相关文章推荐
- Introduction to Java Programming编程题6.7<统计0~9随机数出现的次数>
- java中的final关键字
- Java中this和super关键字区别
- Java线程
- [转]Java常用概念解答
- java中重载与重写的区别
- java远程调试
- Java中继承
- eclipse最常用快捷键
- Java中的protected,或许并不是我们想的那样
- JAVA_SE基础——25.面向对象练习
- 排序算法(Java语言)——插入排序
- spring mvc+freemarker+mybatis整合
- 项目出现叹号(红色,黄色)
- eclipse中的所有快捷键
- 初次使用Eclipse的Maven插件时add dependency找不到包的解决办法
- [笔记][Java7并发编程实战手册]3.4 等待多个并发事件的完成CountDownLatch倒计时闭锁
- java中的Lamda语句
- java 线程池用法
- Java编程思想读书笔记:第2章 一切都是对象