精华内容
下载资源
问答
  • 展开全部抽象类:1、抽象类中e69da5e887aa62616964757a686964616f31333365646264可以有普通方法,如果想让方法...2、如果一个普通类实现了一个抽象接口或者抽象类,那么意味着必须重写抽象方法。一、继承(extends)...

    展开全部

    抽象类:

    1、抽象类中e69da5e887aa62616964757a686964616f31333365646264可以有普通方法,如果想让方法子类必须实现,就弄成抽象方法。

    2、如果抽象类中有抽象方法,那么这个类必须定义为抽象类。

    3、抽象类不能被new。

    普通类:

    1、普通类中不能有抽象方法。

    2、如果一个普通类实现了一个抽象接口或者抽象类,那么意味着必须重写抽象方法。

    一、继承(extends)

    继承是对现实生活中的"分类"概念的一种模拟。

    狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是"继承"关系的重要特性:通常简称为"IS_A"关系,UML类图可以这么表示:

    654122dbb5588faae391d922064aaad1.png

    继承的语法

    class 子类名 extends 父类名 {

    ……

    }

    注意:

    父类(parent class)和超类(super class):通常指直接上级;

    基类(base class):通常指包括直接上级在内的"上级的上级";

    例如:

    54171798d72ddb97e845f329fc2de161.png

    子类自动拥有父类声明为public和protected的成员,这就是继承特性的体现之一。

    继承条件下类的访问权限:

    public:外界可自由访问

    private:外界不可访问

    protected:同一包中的子类都可以访问,另一包中的子类(派生于同一个父类)也可以访问

    default:如果不指明任何权限,则默认同一包中的类可以访问

    展开全文
  • 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定...

    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

    由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。

    在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

    父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

    抽象类是指不允许被实例化的类;抽象方法是没有方法体的方法。

    1、抽象类可以不包括抽象方法,它反正不会去实例化,里面的方法是不是抽象的没有本质影响。

    2、但是含有抽象方法的类绝不能被实例化,否则执行这个方法的时候,怎么办?

    3、如果子类是非抽象的,那么它就必须实现父类中的抽象方法;否则,它继承来的抽象方法仍然没有方法体,也是个抽象方法,此时就与“含有抽象方法的类必须是抽象类”相矛盾了。

    抽象类

    又叫抽象基类(不是鸡肋):他在定义的时候使用 abstract 关键字标记的一般类.他可包含一般类所包含的所有特性,例如,字段,属性,方法,另外他还包含一个很特殊的方法,叫抽象方法(这些方法基本上是没有执行代码的函数标题,而派生于该类的的类就必须提供执行的代码).最可气的是,他不能被实例化,他主要的用在类的定义和部分实现这方面,所以他需要在扩充类中完整的扩充并实现功能.

    在Java语言中使用abstract class来定义抽象类。如下实例:

    /* 文件名 : Employee.java */

    public abstract class Employee

    {

    private String name;

    private String address;

    private int number;

    public Employee(String name, String address, int number)

    {

    System.out.println("Constructing an Employee");

    this.name = name;

    this.address = address;

    this.number = number;

    }

    public double computePay()

    {

    System.out.println("Inside Employee computePay");

    return 0.0;

    }

    public void mailCheck()

    {

    System.out.println("Mailing a check to " + this.name

    + " " + this.address);

    }

    public String toString()

    {

    return name + " " + address + " " + number;

    }

    public String getName()

    {

    return name;

    }

    public String getAddress()

    {

    return address;

    }

    public void setAddress(String newAddress)

    {

    address = newAddress;

    }

    public int getNumber()

    {

    return number;

    }

    }

    注意到该Employee类没有什么不同,尽管该类是抽象类,但是它仍然有3个成员变量,7个成员方法和1个构造方法。 现在如果你尝试如下的例子:

    /* 文件名 : AbstractDemo.java */

    public class AbstractDemo

    {

    public static void main(String [] args)

    {

    /* 以下是不允许的,会引发错误 */

    Employee e = new Employee("George W.", "Houston, TX", 43);

    System.out.println("\n Call mailCheck using Employee reference--");

    e.mailCheck();

    }

    }

    当你尝试编译AbstractDemo类时,会产生如下错误:

    Employee.java:46: Employee is abstract; cannot be instantiated

    Employee e = new Employee("George W.", "Houston, TX", 43);

    ^

    1 error

    继承抽象类

    我们能通过一般的方法继承Employee类:

    /* 文件名 : Salary.java */

    public class Salary extends Employee

    {

    private double salary; //Annual salary

    public Salary(String name, String address, int number, double

    salary)

    {

    super(name, address, number);

    setSalary(salary);

    }

    public void mailCheck()

    {

    System.out.println("Within mailCheck of Salary class ");

    System.out.println("Mailing check to " + getName()

    + " with salary " + salary);

    }

    public double getSalary()

    {

    return salary;

    }

    public void setSalary(double newSalary)

    {

    if(newSalary >= 0.0)

    {

    salary = newSalary;

    }

    }

    public double computePay()

    {

    System.out.println("Computing salary pay for " + getName());

    return salary/52;

    }

    }

    尽管我们不能实例化一个Employee类的对象,但是如果我们实例化一个Salary类对象,该对象将从Employee类继承3个成员变量和7个成员方法。

    /* 文件名 : AbstractDemo.java */

    public class AbstractDemo

    {

    public static void main(String [] args)

    {

    Salary s = new Salary("Mohd Mohtashim", "Ambehta, UP", 3, 3600.00);

    Employee e = new Salary("John Adams", "Boston, MA", 2, 2400.00);

    System.out.println("Call mailCheck using Salary reference --");

    s.mailCheck();

    System.out.println("\n Call mailCheck using Employee reference--");

    e.mailCheck();

    }

    }

    以上程序编译运行结果如下:

    Constructing an Employee

    Constructing an Employee

    Call mailCheck using Salary reference --

    Within mailCheck of Salary class

    Mailing check to Mohd Mohtashim with salary 3600.0

    Call mailCheck using Employee reference--

    Within mailCheck of Salary class

    Mailing check to John Adams with salary 2400.

    抽象方法

    当类中的方法在声明的时候加上 abstract 关键字的时候,他就被我们称为抽象方法 abstract method ,但是有个很重要的提醒,只有在抽象类和接口中才可以使用抽象方法。

    如果你想设计这样一个类,该类包含一个特别的成员方法,该方法的具体实现由它的子类确定,那么你可以在父类中声明该方法为抽象方法。

    Abstract关键字同样可以用来声明抽象方法,抽象方法只包含一个方法名,而没有方法体。

    抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。

    public abstract class Employee

    {

    private String name;

    private String address;

    private int number;

    public abstract double computePay();

    //其余代码

    }

    声明抽象方法会造成以下两个结果:

    1、如果一个类包含抽象方法,那么该类必须是抽象类。

    2、任何子类必须重写父类的抽象方法,或者声明自身为抽象类。

    继承抽象方法的子类必须重写该方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该抽象方法,否则,从最初的父类到最终的子类都不能用来实例化对象。

    如果Salary类继承了Employee类,那么它必须实现computePay()方法:

    /* 文件名 : Salary.java */

    public class Salary extends Employee

    {

    private double salary; // Annual salary

    public double computePay()

    {

    System.out.println("Computing salary pay for " + getName());

    return salary/52;

    }

    //其余代码

    }

    展开全文
  • 1.声明方式不同 :抽象类需要关键字Abstract 2.普通类可以直接实例化,抽象类不行 3.抽象类可以有抽象方法,普通类不行 4.抽象类抽象方法可以之声明,不实现

    1.声明方式不同 :抽象类需要关键字Abstract

    2.普通类可以直接实例化,抽象类不行
    3.抽象类可以有抽象方法,普通类不行
    4.抽象类抽象方法可以之声明,不实现
     

    展开全文
  • Java抽象类

    2021-03-01 08:02:24
    java抽象类是拥有抽象方法的类,要用abstract修饰。拥有抽象方法的类就是抽象类,抽象类不可以直接实例化对象,无法进行实例化操作:因为抽象类里有抽象方法,但抽象方法又没有方法体,无法调用,无法调...

    一、解释:

    Java的普通类是一个完善的功能类,可以直接实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。

    java抽象类是拥有抽象方法的类,要用abstract修饰。

    拥有抽象方法的类就是抽象类,抽象类不可以直接实例化对象,无法进行实例化操作:因为抽象类里有抽象方法,但抽象方法又没有方法体,无法调用,无法调用方法便无法实例化对象

    抽象类的使用原则如下:

    (1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public;

    (2)抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理;

    (3)抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类;

    (4)子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。);

    (5)抽象类继承子类里面有明确的方法覆写要求,而普通类可以有选择性的来决定是否需要覆写;

    (6)抽象类实际上就比普通类多了一些抽象方法而已,其他组成部分和普通类完全一样;

    (7)普通类对象可以直接实例化,但抽象类的对象必须经过向上转型之后才可以得到。

    虽然一个类的子类可以去继承任意的一个普通类,可是从开发的实际要求来讲,普通类尽量不要去继承另外一个普通类,而是去继承抽象类。

    且抽象类中一定含有构造方法,存在的目的就是为了属性的初始化,并且子类对象实例化的时候,依然满足先执行父类构造,再执行子类构造的顺序。

    所有的子类如果要想正常的完成操作,必须按照指定的方法进行覆写才可以,而这个时候抽象类所起的功能就是一个类定义模板的功能。

    展开全文
  • 你对于java抽象类的了解程度有多少呢?很多刚刚学习java的人对于java抽象类都不大熟悉,那么下面就让我们一起来具体的了解一下它的特点和含义吧。首先,我们来说一下java抽象类的特点,特点的话具体的有以下6点,一...
  • 深入理解Java抽象类

    2021-03-01 08:02:43
    基础部分内容差不多...本篇内容主要讲解Java中的抽象类。那什么是抽象类呢?顾名思义嘛,就是很“抽象”的类,抽象是具体的代名词,就像老板跟你说,大家加油干,努力干活就跟你涨工资,但很多时候都只是光说不做...
  • java抽象类 继承

    2021-03-08 06:02:32
    关于java抽象类 继承的搜索结果回答抽象类和接口的区别:默认的方法实现抽象类可以有默认的方法实现完全是抽象的。接口根本不存在方法的实现。抽象类中可以有已经实现了的方法,也可以有被abstract修饰的方法(抽象...
  • Java 抽象类详解

    2021-02-25 19:54:20
    一、抽象类的定义被关键字“abstract”修饰的类,为抽象类。(而且,abxtract只能修饰类和方法)下面显示了一个最简单的空抽象类public abstract classAbstractClass {public static voidmain(String[] args) {Abstr.....
  • 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定...
  • java抽象类

    2021-03-16 19:58:22
    几种典型应用最简单也是最核心的抽象类示例:学习应该是一个循序渐进的过程,学java抽象类也好,学数据结构也好,或者其它,深入学习以后会发现知识点很多,如果学习的节奏加快,会感觉有一堆的东西在意念中,而这个...
  • java抽象类详解

    千次阅读 2021-02-25 18:11:57
    final关键字final 修饰符 可以修饰 类、属性、方法修饰类时 表示该类不能被继承 其他特征 跟普通的类一样修饰 属性时 表示 改属性不能改变 并且 必须赋初始值修饰方法时 表示该方法不能被重写什么是抽象类?...
  • Java抽象类简述

    2021-03-11 14:30:50
    Java 抽象类在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类抽象类除了不能实例化...
  • java抽象类和抽象方法

    2020-12-30 10:42:56
    一、抽象方法和抽象类的概念和使用 在之前的课程中学习了方法的覆写(子类覆写父类的方法),也就是子类可以重写父类的方法,但是这是可选的(你可以覆写也可以不覆写在语法上都不会出现问题的),如果有一个需求:...
  • Java抽象类\多态

    2021-02-13 01:32:36
    1抽象类什么时候使用?当某个父类只是知道子类应该包含怎么样的方法,但是无法准确知道子类如何实现这些方法。比如一个图形类应该有一个求周长的方法,但是不同的图形求周长的算法不一样。那该怎么办呢?(分析事物时...
  • Java抽象类单继承使用实例解读假设现在三类事物:机器人、人、猪三类事物可以做出的行为分别是:机器人:充电,工作人:吃饭,工作,睡觉猪:吃饭,睡觉首先来分析一下,三类事物的共同特点是,能做出相应的行为。...
  • java 抽象类

    2021-03-12 21:00:11
    当编写一个类时,我们往往...抽象方法的定义:通过abstract关键字来修饰的类称为抽象类;我的总结:抽象类用private修饰,里面可以有用private修饰的方法(没有方法体),强制子类进行覆写;可以理解为:具有某些公共...
  • Java 抽象类

    2021-03-08 09:30:16
    1、抽象类:使用abstract修饰的类抽象方法:使用abstract修饰的方法包含抽象方法的类必须是抽象类,但是抽象类可以不包含抽象方法。抽象类是需要被继承的,抽象方法是需要被重写的,建议重写抽象类中的所有方法(包含...
  • 本文实例讲述了Java抽象类原理与用法。分享给大家供大家参考,具体如下:一、抽象类的基本概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和...
  • 抽象类java程序中,允许在定义方法时不写方法实体,这种方法被称为抽象方法,抽象方法必须使用abstract关键字修饰。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。abstract void fun();如果一个类中...
  • 抽象类前使用abstract关键字修饰,则该类为抽象类抽象的方法是不完全的,它只是一个方法签名而完全没有方法体抽象的方法没有花括号继承抽象类的子类必须覆盖父类的抽象函数(即:子类继承抽象类以后,抽象类里面所有...
  • 如何彻底理解Java抽象类 为什么要用抽象类 什么情况下用抽象类呐,到底什么是抽象类,有时明明一个普通类就可以解决了,为啥非得整个抽象类,装逼吗我曾带着这样的疑惑,查了很多资料,看了很多源码,写了很多代码,...
  • 一、java抽象类的作用java抽象类的作用具体的可以分成以下的三点:1、抽象类通常都是用来表征对问题领域进行分析、设计中得出的抽象概念,是对大多数看上去不同,可是本质上却是相同的具体概念的抽象2、在面向对象...
  • java抽象类的构造方法和普通类的构造方法一样都是用来初始化类只是抽象类的构造方法不能直接调用 因为抽象类不能实现实例但是一旦一个普通类继承了抽象类 便也可以在构造函数中调用其抽象类的构造函数也可以使用其...
  • 当我们要完成的任务是确定的,但具体的方式需要随后开个会投票的话,Java抽象类就派上用场了。这句话怎么理解呢?搬个小板凳坐好,听我来给你讲讲。01、抽象类的 5 个关键点1)定义抽象类的时候需要用到关键字 ...
  • 1. 抽象类 1.1 抽象方法理解 定义: 只有方法的申明,没有具体的实现即方法体。 例如: abstract void test(); 注意: 抽象方法必须使用abstract修饰,否则编译时会...1.3 抽象类普通类的区别 1.抽象方法必须被访
  • java抽象类的详细介绍

    2021-03-17 19:15:55
    1、区分普通方法和抽象方法在java中,当一个类的方法被abstract关键字修饰时,该方法就称为抽象方法,而抽象方法所在的类必须被定义为抽象类。当一个方法被定义为抽象方法后,意味着该方法不会有具体的实现,而是在...
  • Java中的抽象类

    2021-03-26 14:23:32
    抽象方法的概述:有方法体的方法,并且使用abstract关键字修饰的方法抽象类的概述:用abstract修饰的类就是抽象类抽象方法的格式权限修饰符 abstract返回值类型 方法名(形参);public abstract void run();抽象类的格式...
  • 一.什么是抽象类? 当子类继承父类后,父类中所写的方法没有实际工作,而由子类中重写的同名方法工作,此时我们可以把它设计...2.在抽象类中可以有和普通类一样的数据成员和方法,其方法可以被重写,也可以被子类直接调用. 3.
  • 关于java抽象类的含义还是非常丰富的,所包含的内容还是比较广阔的。接下来结合实际的代码来为大家解析下。一起来了解一下吧。首先,我们需要知道的是,在面向对象的概念中,所有的对象都是通过类来描绘的,但是反...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 167,702
精华内容 67,080
关键字:

java抽象类普通类

java 订阅