`
Drakedog
  • 浏览: 48835 次
  • 性别: 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-抽象类和接口--学习笔记.docx

    在本篇Java学习笔记中,我们将深入探讨这两个概念及其作用。 首先,我们来看抽象类。抽象类是那些包含了至少一个抽象方法的类。抽象方法是一种只有方法签名而没有具体实现的方法,它使用`abstract`关键字来标识。...

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

    本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...

    JAVA个人学习笔记

    JAVA学习笔记是面向对象编程语言的学习笔记,涵盖了JAVA的基本概念、面向对象编程思想、类和对象的概念、实例变量和局部变量的区别、方法的定义和调用、类型转换、精度问题、移位问题、switch语句的使用等内容。...

    《java学习》-java学习笔记.zip

    这个章节可能涵盖了Java中一些容易混淆的概念,比如值传递与引用传递、静态与非静态、接口与抽象类的区别等,有助于深化对Java语言的理解。 通过这份笔记的学习,读者将能系统地掌握Java的核心知识,并具备解决...

    java学习笔记 java学习笔记

    Java学习笔记涵盖了许多核心概念,包括面向对象编程的各个方面。以下是对这些知识点的详细解析: 1. **继承中方法的重写**: 当子类重写父类的方法时,子类方法的访问权限必须至少等于或大于父类中对应方法的访问...

    java学习笔记.doc

    Java 学习笔记 本资源摘要信息涵盖了 Java 编程语言的基础知识,着重于面向对象编程(OOP)的概念和实现。下面是该资源的详细知识点: 1. 面向对象编程(OOP)的基本概念: * 对象: everything is an object...

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

    在Java编程语言中,`final`关键字、抽象类和接口是面向对象编程的重要概念。它们各自扮演着不同的角色,帮助我们构建更健壮、可维护的代码结构。 首先,`final`关键字在Java中具有多种用途。它可以用来修饰类、方法...

    JAVA学习笔记

    通过讲解this关键字、继承、static关键字和代码块、final关键字、多态、方法重写、抽象类与接口、封装与隐藏、垃圾回收、类组合、包装类、对象处理、类成员、final修饰符详解等知识点,本文档为Java学习者提供了一套...

    Java学习笔记整理

    这些学习笔记将带你深入了解Java的核心概念,特别是面向对象编程和集合框架。以下是对每个文件内容的详细阐述: 1. **Day0804_HashMap的基本使用.docx**:HashMap是Java集合框架中的一个重要组件,它提供了键值对的...

    《Java学习笔记》

    这份《Java学习笔记》包含了丰富的知识内容,旨在帮助学习者全面掌握Java编程技术。笔记分为7个PDF部分,覆盖了从基础到高级的Java编程概念。 1. **Java基础知识**:这部分内容通常包括Java的历史背景、环境配置、...

    Java学习笔记.pdf

    面向对象是 Java 语言的核心之一,它包括类和对象、继承、多态、封装、抽象等方面的知识。面向对象的编程思想是 Java 开发的基础,初学者需要掌握这些知识,以便更好地理解和应用 Java 语言。 3. Java SE 核心 ...

    java学习笔记.docx

    Java学习笔记主要涵盖了Java的基本概念、语法、面向对象编程、继承、多态性、抽象类等知识点。 JDK、JRE和JVM 在Java学习笔记中,首先介绍了JDK、JRE和JVM的概念。JDK(Java Development Kit)是Java开发工具包,...

    java学习笔记.pdf

    抽象类和抽象方法是用来定义模板的,不能被实例化。 - **4.12 SUPER关键字** super关键字用于引用当前对象的直接父类中的属性和方法。 - **4.13 接口** - **接口的声明与使用**:接口定义了一组抽象方法。 - ...

    java学习笔记(一个初学者的java学习笔记)

    ### Java学习笔记——基础知识详解 #### 一、Java基本数据类型及内存占用 Java作为一种广泛使用的编程语言,其基础数据类型对于理解程序的行为至关重要。Java提供了八种基本数据类型,分为数值型、字符型和布尔型...

    JAVA学习笔记.pdf

    JAVA学习笔记.pdf 中讲解了JAVA语言的基础知识,包括类的基本知识、成员变量、成员方法、类的实例、内部类、匿名类、接口、包等。 类的基本知识 在JAVA中,类是对象的蓝图,类的声明语法为:[访问控制符] class ...

    JAVA学习笔记————————

    在深入探讨JAVA学习笔记之前,我们首先理解一下JAVA这一编程语言的重要性。JAVA,由Sun Microsystems公司(现已被Oracle收购)于1995年推出,是一种面向对象的、跨平台的编程语言,以其“一次编写,到处运行”的特性...

    java JDK 8学习笔记

    Java JDK 8是Java开发工具集的一个重要版本,它的发布带来了许多创新特性和改进,极大地提升了开发者的工作效率。...这份"java JDK 8学习笔记"提供了清晰的目录结构,便于查阅和学习,是Java初学者的宝贵资源。

Global site tag (gtag.js) - Google Analytics