`
Drakedog
  • 浏览: 48179 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java 抽象方法抽象类学习笔记

 
阅读更多

以下是学习java抽象类抽象方法的学习笔记,根据自己的理解写下来的,如果有不正确的地方欢迎指出。
1.抽象类不可以创建对象。
2.如果一个类继承抽象类,那么就必须实现这个抽象类中的所有抽象方法,非抽象方法可以不重写,但如果不实现其中所有的抽象方法,那么这个类也必须是抽象类。
3.当你需要这样一个类:你不希望它被创建对象,但在这个类中添加抽象方法又没有任何意义的时候,你可以把这个类写成抽象类。

abstract class Super {
    abstract void f();
}

public class AbstractClass extends Super {

    public static void main(String[] args) {
          Super s = new AbstractClass();
          s.f();
    }

     @Override
    void f() {
         System.out.println("this is a class overriwrite from super class");
    }
}
运行结果就是:this is a class overriwrite from super class,

对于父类对象的引用指向子类对象,这里有篇文章:http://blog.csdn.net/gideal_wang/article/details/4913965
以下是java编程思想中对于抽象类和抽象方法作用的描述:
  创建抽象类和抽象方法非常有用,因为它们可以使类的抽象性明确起来,并告诉用户和编译器打算怎样来使用它们,抽象类还是很有用的重构工具,因为它们使得我们可以很容易的将公共方法沿着继承层次结构向上移动。

 

 最近从自己写适配器类对抽象类有了实战型的了解,如果是做android的朋友,可以看看,比如做一个ListViewAdapter,我需要继承自BaseAdapter,但是我在自定义适配器和BaseAdapter中间写一个类:

public abstract class BaseListAdapter<T> extends BaseAdapter
{
  protected final List<T> list;

  public BaseListAdapter()
  {
    super();
    this.list = new ArrayList<T>();
  }

  public boolean addAll(List<? extends T> list)
  {
    return this.list.addAll(list);
  }

  public void clear()
  {
    this.list.clear();
  }

  public int getCount()
  {
    return list==null?0:list.size();
  }

  public T getItem(int i)
  {
    return this.list.get(i);
  }

  public long getItemId(int id)
  {
    return id;
  }

  public boolean hasStableIds()
  {
    return true;
  }

  public boolean isEmpty()
  {
    return list==null?true:list.isEmpty();
  }

  public T remove(int i)
  {
    return list.remove(i);
  }
 
  public void addItem(T t){
   this.list.add(t);
  }
}

这是一个抽象类,为什么要用这个抽象类呢?里面可没有一个抽象方法呀!上面讲到了,这样其实是希望这个类不被创建对象,但其实,这只是个鸡肋的理由,真正的理由是:BaseAdapter就是一个抽象类,但是getView()方法我需要在具体的适配器中实现,那这个类如果不写成抽象类,那不是要实现getView方法么,既然这样,就把这个类写成抽象类,具体的getView方法放到具体的适配器类中实现,接下来,这个类还有什么好处呢?

我可以在activity先setAdapter,然后再赋值!!为什么?因为

 public BaseListAdapter()
  {
    super();
    this.list = new ArrayList<T>();
  }

这个list已经被创建了对象,而不是空的,以后的操作可以用addAll,remove等来对传入adapter的list做操作,而这些非抽象方法一旦被自定义适配器继承,那么这些方法都将成为子类的方法!

个人心得,谢绝转载,如要转载,太没劲了!

分享到:
评论

相关推荐

    java学习笔记接口和抽象类

    java学习笔记接口和抽象类

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    好啊好啊 抽象类与接口是Java中最重要部分之一,这里用较大的篇幅来做下这部分的笔记. 1. final关键字 在Java中, 可以使用final关键字修饰类、方法以及成员变量。 (1).final标记的类不能被继承; (2).final标记...

    Java-抽象类和接口--学习笔记.docx

    JAVA学习笔记,java知识点总结

    Java学习笔记(必看经典).

    Java学习笔记(必看经典). 详细记录java学习笔记

    java学习笔记 初学者必读

    7.7. 抽象类 7-24 7.8. 接口 (模板方法模式) 7-25 7.9. Object 类 7-27 7.10. 封装类 7-28 7.11. 内部类 7-29 7.11.1. 内部类的分类 7-29 7.11.2. 成员内部类 7-29 7.11.3. 局部内部类 7-30 7.11.4. 静态内部类 7-30...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

     《java jdk 7学习笔记》适合java的初中级读者,以及广大java应用开发人员。 作译者 林信良(网名:良葛格) 学历:台湾大学电机工程学系 经历:台湾升阳教育训练技术顾问、专业讲师,oracle授权训练中心讲师 ...

    观看韩顺平学习整理java的笔记到异常

    抽象类--模板设计模式 9 接口 9 内部类 11 匿名内部类的使用(重要!!!!!!!) 13 成员内部类的使用 13 静态内部类的使用 14 枚举的二种实现方式 14 自定义类实现枚举 14 使用 enum 关键字实现枚举注意事项 15 enum 用...

    JAVA(J2SEJ2EE)学习笔记pdf

     内容包括:j2se语法、循环控制、OOP设计、方法设计、重写、重载、抽象类/方法、接口、异常处理、多线程、swing。以及部分oracle内容。   本笔记是pdf格式,经过我多次排版,结构清晰接近出版物,内容充实,示例...

    java日常学习笔记第二篇.md

    java日常学习,关于继承和多态的知识点,还有一些抽象类abstract类和方法的使用,这些是我的个人笔记,在学习过程不懂得东西,也仅供大家参考。

    java内部学习笔记.docx

    3.14抽象类 25 3.15接口 25 3.16内部类 26 3.17匿名类 27 3.18二维数组和对象数组 28 3.19其他注意事项 28 Java SE核心I 30 4.1 Object类 30 4.2 String类 31 4.3 StringUtils类 33 4.4 StringBuilder类 33 4.5正则...

    学习笔记:抽象封装、继承、多态.doc

    本文档记录了类与类的、抽象封装、继承、多态几种表现形式,通过实际开发,加上自已的理解总结了这几种表现形式。。对开刚学习java的朋友们非常有用,还加上的例子,比较易懂。。。欢迎大家下载哦。。

    JAVA笔记(根据马士兵的java视频整理).pdf

    * 面向对象编程的基础知识,包括类、对象、继承、多态、封装、抽象等概念 集合框架 * JAVA中的集合框架,包括ArrayList、LinkedList、HashMap、TreeMap等 IO流 * JAVA中的IO流,包括文件输入/输出、网络输入/...

    java从入门到精通视频教程(全94讲)学习笔记整理(齐全).docx

    -抽象类、接口 -final.作业评讲 -作业、测试题 -数组 -排序、查找 -二进制、位运算、位移运算 -集合 -集合 -集合 -集合补充 -异常 -面试题评讲 -布局管理器 -常用组件 -swing编程实战 -绘图技术.坦克大战2 -事件处理...

    达内java学习笔记-总最全

    java学学习必备 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做什么(方法):告诉...

    Java学习笔记(必看经典)

    Java学习笔记(必看经典) JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性)...

    Java学习笔记

    对象是类的实例化,类是对象的抽象 化。 引用 4.动态更新 5.简单! 没有指针和相关的内存操作 new 内存操作 gc 内存回收清理 Java 中的回收机制: 零引用回收 问题: System.gc(); Runtime.getRuntime().gc(); 调用...

    Java-J2SE学习笔记

    properties属性类,super关键字,this操作,abstract抽象类,多态性,集合,接口…… java面试中长问到的一些问题及笔试题目,对于将要面试的人建议好好看一下。

    java学习笔记

    @Author: sabot @Date:2019-07-24 文章目录基础语法1.数据类型2.运算符3.快捷键4.方法面向对象与封装1....抽象类3.接口4.多态5.final关键字6.权限修饰符7.内部类常用API第二部分1.Date类2.Calender类3.Sys

Global site tag (gtag.js) - Google Analytics