• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
就是我的猫
博客园    首页    新随笔    联系   管理    订阅  订阅
黑马程序员——Java基础---面向对象之抽象

                                                                                       面向对象之抽象

  抽象类(abstract)

 

      (1)只抽取了很多类的方法的声明,为了保证不出问题,方法声明用abstract修饰。

 

      (2)抽象类的特点

 

                A:一个类如果有了抽象方法,那么这个类必须是抽象类。抽象类里边可以没有抽象方法。

 

                B:抽象类是不能够被实例化的。不能够创建对象的。

 

                C:如果一个类继承抽象类,那么,它要么重写抽象类中的所有抽象方法,要么本身也是抽象类。

 

      (3)抽象类的成员特点:

 

                A:成员变量:子类可以直接继承抽象类中的成员变量。(抽象类中的成员变量可以和以前是一样的)

 

                B:成员方法:抽象类中分为两种方法,

 

                                  一种是抽象方法,这种方法在子类中必须要被实现。

 

                                  一种是普通的方法。可以被子类直接继承使用。

 

                C:构造方法:抽象类不能被实例化,那么它有构造方法吗?抽象类是class,那么它就有构造方法。它的构造方法有用吗?

                         有,为了让子类实例化的时候使用。

 

       (4)举例:教师举例,学生举例,员工举例

 

       (5)抽象类的相关问题:

 

                A:抽象类中是否有构造函数?

               构造函数是对象的基本,没有构造函数就没有对象。
               若果在父类中(这里就是你的抽象类)中显示的写了又参数的构造函数,在子类继承是就必须写一个构造函数来调用父类的构造函数
例子:

 1 abstract class Person {
 2 //定义一个抽象类,必须被继承
 3 
 4 
 5 Person(int i) {
 6 
 7 
 8 }
 9 }
10 
11 public class Student extends Person {
12 
13 
14 Student() {
15 
16 super(int i)://必须显示的调用父类构造方法//super代表父类对象
17 }
18 }
19 
20 如果父类中有没有参数的构造函数,在子类中可以不显示的写父类的构造函数,Java会自动调用没有参数的构造函数
21 例子:
22 abstract class Person {
23 //定义一个抽象类,必须被继承
24 
25 
26 Person() { //此构造函数也可以不写,Java会默认添加一个没有参数的构造函数
27 
28 
29 }
30 }
31 
32 public class Student extends Person {
33 
34 
35 Student() {
36 
37 //super();//可以不写,Java会自己调用这个super()方法
38 }
39 }

 

 

 

 

                B:抽象关键字abstract不可以和哪些关键字共存?

 

                   private

 

                     私有的,外部直接无法访问。子类也同样无法访问

 

                   abstrac

               修饰的方法就是为了让子类继承并重写的

 

                   static

                       那么这个时候抽象方法就可以可以通过类名调用,但是这样是没有意义的。

 

                   final

               修饰的方法不能被重写。所以它和abstract冲突。

 

                 

               C:抽象类中可不可以没有抽象方法?

 

                       可以。如果这么做只有一个目的不让你创建这个类的对象

 

 

 

posted on 2015-11-29 18:03  就是我的猫  阅读(174)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3