`

黑马程序员--java基础复习--抽象类、抽象方法和面向父类编程

 
阅读更多

---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ---------------------

抽象的概念:

  抽象就是把一些事物的共性提炼出来,放到一个类中,把这些事物的不同之处交给子类去实现,比方说人都要吃东西,就可以给人一个吃东西的抽象方法,每个人在吃东西的时候就要自己确定到底吃什么,怎么吃,和谁吃。

 java中的抽象

  在java中抽象用abstract来表示,abstract可以修饰方法,也可以修饰类

 

  • 修饰类的时候,这个类会成为一个抽象类,这个类不能生成对象实例,但是可以作为变量声明的类型,这里要提的一点在进行变量声明是,要养成一个习惯:多声明成超类,这样就时时刻刻在使用多态了,java系统就是靠多态撑起来的。
  • 修饰方法的时候,这个方法就会成为抽象方法,只是被声明,没有被实现,什么叫实现,就是方法有{}这样的代码块。而抽象方法的{}直接用分号 ; 代替了。抽象方法定义的是一种标准:方法的功能,接收的参数等,抽象方法只能protected和public修饰的。因为其必须要能被子类访问并实现。

有抽象方法的一定是抽象类,但是抽象类中不一定要含有抽象方法,我们常用的WindowAdapter就是一个没有抽象方法的抽象类。这里说一下接口和抽象类的区别

  • abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。
  • 在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
  • abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。 
  • 实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
  • 接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
  • 抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。 
  • 接口中的方法默认都是 public,abstract 类型的。而abstract class中方法可以是protected abstract的,因为抽象类的下家全是子类,而interface的下家是所有类

抽象类的作用

  • 强迫子类复写一些功能。
  • 抽象类该如何描述事物,就如何描述事物,只不过,该事物出现了一些未实现的方法,需要明确实现。但是无法定义主体。通过抽象方法来实现。需要子类实现。
  • 抽象类比一般类多了抽象函数,就是在类中可以定义抽象方法。不可实例化。
  • 抽象类在公司通常不是由程序员定义的,而是由项目经理或者某个模块得设计人员。设计抽象类得原因通常只有一个:为了规范方法名。咱们都知道,抽象类必须要继承,不然没法用,作为模块设计者,可以把让底层程序员直接用得方法直接调用,而一些需要让程序员覆盖后自己做得方法则定义称抽象方法。

附上一个抽象类的使用例子

使用抽象类的时候一定要规范命名,让人家一看就明白了这个类是用来干嘛的

 

 

abstract class SayByeBye{
	protected abstract void sayByeBye();
}

class ChineByeBye extends SayByeBye{
	protected void sayByeBye() {
		System.out.println("再见");		
	}	
}

class JapanByeBye extends SayByeBye{
	protected void sayByeBye() {
		System.out.println("sa yo na la");		
	}	
}

class USByeBye extends SayByeBye{
	protected void sayByeBye() {
		System.out.println("See you");		
	}	
}

 ---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

分享到:
评论

相关推荐

    黑马程序员 - Java基础教学 - 08 - 面向对象(4)-多态.doc

    Java基础教学 - 面向对象(4)- 多态 在本文中,我们将讨论Java语言中的一种重要概念 —— 多态(Polymorphism)。多态是面向对象编程(OOP)中的一个核心概念,它允许我们编写更加灵活和可扩展的代码。 一、多态...

    黑马程序员入学Java精华总结

    ### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...

    01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip

    【标题】"01_黑马程序员_张孝祥_Java基础加强_课程价值与目标介绍.zip" 提供的是一门由黑马程序员机构推出的Java基础强化课程,由讲师张孝祥主讲,旨在深入讲解Java编程的基础知识并进行能力提升。 【描述】中提到...

    黑马程序员_Java基础辅导班教程课件[第01期]第15天

    《黑马程序员_Java基础辅导班教程课件[第01期]第15天》是针对初学者设计的一堂深入浅出的Java编程课程,旨在帮助学员巩固和深化Java基础知识。这堂课件涵盖的内容广泛且实用,对于想要在IT行业中开启Java开发旅程的...

    Java基础案例教程(第2版)_PPT.zip

    11. **接口和抽象类**:接口定义一组方法签名,不包含实现,而抽象类可以包含未实现的方法,它们都用于实现多态。 12. **异常处理**:Java通过try-catch-finally结构来处理运行时可能出现的错误,保证程序的健壮性...

    Java抽象类和抽象方法

    在深入探讨Java抽象类与抽象方法之前,我们首先需理解其基本概念以及它们在面向对象编程中的作用。Java作为一种广泛使用的编程语言,提供了多种机制来实现代码的复用性和灵活性,其中抽象类和抽象方法是关键特性之一...

    程序员--java面试100题目

    在Java中,抽象主要体现在抽象类(abstract class)和接口(interface)。 - **继承**:继承允许创建一个新的类(子类)从已有的类(父类)继承特性,提高了代码的复用性和扩展性。Java中的继承使用`extends`关键字...

    coding-java面向对象基础项目-复习语言特性

    面向对象编程是Java的核心特性,本项目旨在复习和巩固Java语言中的面向对象基础知识。尚硅谷的这个项目三,通过实际的编程练习,帮助学习者深入理解面向对象编程的关键概念。在观看视频教程(BV1Kb411W75N/?p=387)...

    黑马程序员_java8新特性详解笔记和源码

    Java 8是Java语言发展的一个重要里程碑,引入了许多创新性的特性和改进,...黑马程序员的Java8新特性详解笔记和源码提供了深入学习这些概念的资源,结合实际的代码示例,将有助于你更好地理解和掌握Java 8的核心特性。

    黑马程序员毕向东java基础课堂完整版文档

    1. **面向对象编程**:深入解析类、对象、封装、继承、多态等核心概念,以及构造方法、抽象类和接口的应用。 2. **异常处理**:介绍如何使用try-catch-finally语句块进行异常捕获和处理,理解Checked和Unchecked异常...

    java-数组与方法及面向对象基础

    为了实现面向对象编程,我们还需要了解构造器、抽象方法、接口、访问控制、重载和重写等概念。 构造器用于初始化新创建的对象,比如`public MyClass(int value) {...}`。抽象方法没有实现,仅在抽象类中声明,由...

    黑马程序员入学面试题

    抽象方法是没有实现体的方法,抽象类则包含至少一个抽象方法。`abstract`关键字不能与以下关键字共存: - `private`:因为抽象方法必须被子类覆盖,而私有方法无法被子类访问。 - `final`:`final`关键字用于声明不...

    黑马程序员面试宝典(java)2018版

    《黑马程序员面试宝典(java)2018版》是一本专门为Java开发者准备的面试指南,涵盖了大量在面试过程中可能遇到的问题和知识点。这本宝典由黑马程序员机构精心编纂,汇集了近万名学员的实际面试经验,为求职者提供了...

    Java面向对象(高级)- 抽象类与抽象方法(或abstract关键字)

    抽象类和抽象方法是面向对象编程中的重要概念,它们允许程序员创建一种通用的模板,用于定义一系列相关类的公共行为和属性。抽象类和抽象方法主要通过`abstract`关键字来标记。 一、抽象类的由来 1. 举例1 当设计...

    计算机后端-Java-Java核心基础-第15章 面向对象07 06. 抽象类与抽象方法的使用.avi

    计算机后端-Java-Java核心基础-第15章 面向对象07 06. 抽象类与抽象方法的使用.avi

    面向抽象编程(代码)_java编程_

    3. **继承与多态**:面向抽象编程利用了Java的继承特性,子类可以继承父类的属性和方法,这使得代码的重用变得简单。多态是指一个引用类型可以指向不同类型的实例,只要这些实例符合特定的接口或抽象类。例如,`List...

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

    Java中的`final`关键字、抽象类和接口是面向对象编程中的核心概念,它们共同构建了类的层次结构和多态性。以下是对这些概念的详细解释: 1. **final关键字** - `final`关键字用于确保变量的值一旦被赋值后就不能...

    Java基础案例教程(第2版)-教学设计.zip

    类与对象是面向对象编程的核心,Java作为纯面向对象的语言,这部分尤为重要。学生需要理解类的定义、对象的创建与初始化,以及封装、继承和多态三大特性。此外,还会涉及抽象类、接口以及访问修饰符等高级概念。 ...

    B站《黑马程序员匠心之作-C++教程从0到1入门编程,学习编程不再难》 配套笔记

    4. **第4阶段实战-基于多态的企业职工系统**:多态是C++面向对象编程的重要特性,这一阶段可能会讲解虚函数、抽象类和接口,以及如何利用这些概念构建企业职工管理系统。 5. **第7阶段-C++实战项目机房预约资料**:...

Global site tag (gtag.js) - Google Analytics