码迷,mamicode.com
首页 > 编程语言 > 详细

黑马程序员——Java基础---面向对象之抽象

时间:2015-11-29 19:28:04      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

             ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!-------

                                                                                       面向对象之抽象

  抽象类(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:抽象类中可不可以没有抽象方法?

 

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

 

 

 

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------    

黑马程序员——Java基础---面向对象之抽象

标签:

原文地址:http://www.cnblogs.com/hmchengxuyuan/p/5005117.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!