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

Java中抽象类的理解

时间:2017-08-31 09:48:25      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:cal   mem   阅读   成员   抽象   height   返回   col   数据类型   

----------------------------------------

今天来给大家分享一下我对抽

象类及抽象方法的理解:

----------------------------------------

抽象类:

  不能使用new方法进行实

  例化的类,即没有具体实

  例对象的类,只可以通过

  抽象类派生出新的子类,

  再由其子类来创建对象;

抽象方法:

  抽象方法就是以 abstract

  修饰的方法,这种方法只

  声明返回的数据类型,方

  法名称和所需要的参数,

  没有方法体,也就是说抽

  象方法只需要声明,当一

  个方法为抽象方法时,意

  味着这个方法必须被子类

  的方法所重写,否则其子

  类的该方法仍然是抽象的;

----------------------------------------

抽象类的特点:

  A:抽象类和抽象方法必须用abstract关键字修饰;

  B:抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类;

  C:抽象类不能直接实例化;(可以通过子类(重写方法后的子类)的多态方式实例化);

    1.它不是具体的;

    2.抽象类有构造方法,用于子类访问父类数据的初始化;

  D:抽象类的子类;

    1.如果不想重写抽象方法,该子类必须是抽象类;

    2.成为具体类则必须重写所有的抽象方法;

----------------------------------------

下面给出一个抽象类的实例:

----------------------------------------

 1 public class AbstractDemo {
 2     public static void main(String[] args) {
 3         //Tree t = new Tree();//抽象的子类不能实例化;Error!
 4         Grass g = new Grass();//非抽象类的子类实例化
 5         g.grow();
 6         System.out.println("-------------");
 7         Plant p = new Grass();//多态的方式
 8         p.grow();
 9     }
10 }
11 abstract class Plant{
12     public abstract void grow();
13 }
14 
15 /*
16  * 1.子类是抽象类;
17  */
18 abstract class Tree extends Plant{
19     Tree(){
20         System.out.println("tree");
21     }
22 }
23 
24 /*
25  * 2.子类不是抽象类,则必须重写所有抽象方法;
26  */
27 class Grass extends Plant{
28     Grass(){
29         System.out.println("grass");
30     }
31     public void grow(){
32         System.out.println("grass growing");
33     }
34 }

----------------------------------------

抽象类的成员的特点:

  A:成员变量

    1.既可以是变量,也可以是常量;

  B:构造方法

    1.用于子类访问父类数据的初始化;

  C:成员方法

    1.既可以是抽象的,也可以是非抽象的;

抽象类成员方法特性:

  A:抽象方法

    1.强制要求子类做的事情;

  B:非抽象方法

    1.子类继承的事情,提高代码复用性;

----------------------------------------

下面给出一个抽象类的成员的

实例:

----------------------------------------

 1 public class AbstractMember {
 2     public static void main(String[] args){
 3         
 4         Phone p = new Vivo();    //这里是多态;(用来实例化抽象类)
 5         p.height = 1460;        //1600 -> 1460
 6         System.out.println(p.height);
 7         System.out.println(p.width);
 8         System.out.println("-----------");
 9         p.call();        //vivo call
10         p.method();        //vivo method
11         
12         
13         
14     }
15 }
16 
17 abstract class Phone{
18     public int height = 1600;
19     public final int width = 960;
20     public Phone(){}
21     public Phone(String name,int count){}
22     /*成员方法*/
23     public abstract void call();//抽象成员方法;
24     public void method(){        //非抽象成员方法;
25         System.out.println("phone method");
26     }
27     
28 }
29 //非抽象子类,重写抽象父类的抽象方法:
30 class Vivo extends Phone{
31     
32     public void call(){
33         System.out.println("vivo call");
34     }
35     public void method(){
36         System.out.println("vivo method");
37     }
38     
39 }

----------------------------------------

以上就是本人对抽象类的理

解,感谢大家的阅读;

 

Java中抽象类的理解

标签:cal   mem   阅读   成员   抽象   height   返回   col   数据类型   

原文地址:http://www.cnblogs.com/qmdx00/p/7456480.html

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