抽象类--abstract

本文详细介绍了Java中的抽象类概念,包括抽象方法的定义,抽象类与实体子类、抽象子类的区别,以及抽象类中构造方法的使用限制。重点强调了抽象类不能实例化,但派生类需实现抽象方法的规则。
摘要由CSDN通过智能技术生成

抽象类刻画公共行为特征,但并没有在抽象类内部实现这些公共行为,而是通过继承由派生类实现具体公共行为

相关知识

(1)抽象类是用abstract 修饰的类

(2)含有抽象方法的类一定是抽象类

(3)抽象类中不一定含有抽象方法

(4)抽象类不能实例化对象

抽象方法

用abstract 修饰的类称为抽象类,用abstract 修饰且只有方法声明没有方法体的方法称为抽象方法

定义一个抽象类

abstract class 抽象类名 {

        //数据成员

        //构造方法

        [访问权限] 返回值类型 方法名(形参列表) {//普通方法

        //方法体

        [return 返回值]

        }

        [访问权限] abstract 返回值类型 方法名 (形参列表); //抽象方法,无方法体

}

 Java程序对抽象类的要求

(1)抽象类中可以有零个或多个抽象方法,也可以包含非抽象方法,下面代码,workOn ()为抽象方法,仅有声明,没有方法体

abstract class Person{

        public void talk ( ) { }  //普通方法

        abstract void workOn ( )  //抽象方法

}

(2)抽象类中可以不定义抽象方法,但抽象方法的类必须是抽象类,上面代码中,Person 类定义了抽象方法workOn (),因此必须用abstract 修饰Person类

(3)抽象类可以派生子类,如果派生实体子类,实体子类必须实现抽象类中定义的抽象方法;如果派生抽象子类,抽象子类可以不实现抽象父类的抽象方法

// 抽象父类

abstract class Person {

        public void talk (){     } //普通方法

        abstract void workOn ();  //抽象方法

}

// 实体子类

class Teacher extends Person{

        void workOn () {  //实体类,覆写父类抽象方法

                System.out.println("教师授课");

        }

}

// 抽象子类

abstract class Student extends Person {

        // 没有实现父类的抽象方法workOn ()

        abstract void study ();   //抽象方法

}

上面代码中,Teacher 是Person 类的实体子类,必须实现抽象方法workOn(),Student 为Person 的抽象子类,可以不实现抽象方法workOn(),同时定义抽象方法study()

(4)抽象类不能实例化对象,由抽象类拍派生的实体子类实例化抽象父类对象

// 抽象类

abstract class Person {   }

// 实体子类

class Teacher extends Person{   }

public class Demo {

        public class void main (String [ ] args ) {

                Person.swk = new Person ;  //编译错误

                Person.zbj = new Teacher ;  //通过编译

        }

}

上面代码中, 使用抽象类实例化swk对象(直接调用抽象类的构造方法),提示编译错误;

使用Person 类的实体子类 Teacher 实例化对象zbj(调用实体子类的构造方法),通过编译

(5)抽象类中能定义构造方法,但不能直接调用抽象类的构造方法实例化对象

(6)抽象父类和抽象子类不能有方法名与形参列表相同的抽象方法,即抽象方法不能重载

(7)abstract 和 final 不能修饰同一个类,因为final 修饰的类不能被继承,如果抽象类不能被继承就没有子类覆写抽象方法,抽象类没有存在的意义

(8)abstract 不能与 private 、 static 、 final 或 native 等同时修饰一个方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值