精华内容
下载资源
问答
  • 抽象类可以定义非抽象方法吗
    千次阅读
    2022-03-28 21:47:47

    抽象类不能创建对象,其创建对象没有意义,但是抽象类可以保存一类事物具备的共同属性和行为,让子类进行继承。

    抽象类的构造方法不是给自己用的,而是为了让子类调用构造方法创建对象时初始化用的

    更多相关内容
  • 抽象类定义和使用方法

    千次阅读 2020-10-26 12:22:02
    抽象类: **1**、抽象类怎么定义? 在class前面加abstract关键字... **5**、抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法可以被子类继承的,但是如果子类是非abstract类型的,则一定要进行实例化对象

    抽象类:

      **1**、抽象类怎么定义?
           在class前面加abstract关键字就行了
       **2**、抽象类是无法实例化的,无法创建对象,所以抽象类天生就是被用来继承的(生来就是当爹的)
       **3**、final和abstract不能联合使用,这两个关键字是对立的
       **4**、抽象类的子类也可以是抽象类,也可以是非抽象类
       **5**、抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是可以被子类继承的,但是如果子类是非abstract类型的,则一定要进行实例化对象
       **6**、抽象类中不一定有抽象方法,但是抽象方法必须出现在抽象类中。
       **7**、抽象方法怎么定义?   
       		public abstract void xxx();
       **8**、一个非抽象的类,继承抽象的类,必须将抽象类中的抽象方法进行重写/覆盖/实现
           public void xxx()                      {     }	
          //写代码时,能用多态就用多态	
       到目前为止,只是学习了抽象类的基础语法,一个类到底声明为抽象类还是非抽象类,写的代码多了,自然就理解了
       **
    

    面试题:java语言中凡是没有方法题的方法都是抽象方法。(×)

       object类中就有很多方法没有方法体,都是以“;”结尾的,但他们都不是抽象方法,例如:
       public native int hashCode();
       这个方法底层调用的C++写的动态链接库程序
       前面修饰符列表中没有abstrct,有一个native,表示调用JVM本地程序。
    
    //抽象类里面含有抽象方法
    // 接口:
    public class Abstract {
        public static void main(String[] args) {
            Animal a=new bird() ;//向上转型(自动类型转换)
            Animal b=new  cat();                        ///这就是面向抽象编程
                                 ///以后你就是调用a.xxx
                                ///a的类型Animal是抽象的
                                ///面向抽象编程,不要面向具体编程,降低程序的耦合度,提高程序的扩展力
                                ///这就是编程思想符合OCP原则
            a.move();//在编译的时候move方法是父类的
            b.move();         //在运行的时候move方法是子类的
    
        }
    }
     abstract class Animal{
        public abstract void move();
    
    }
     class bird extends Animal{
        //需要将父类中继承过来的抽象方法进行覆盖/重写
        //这样才可以把抽象方法实现
        public void move(){
            System.out.println("鸟儿在飞翔");
        }
        //如果bird是抽象类的话,那么从Animal中继承过来的就不用重写/覆盖/实现
          //抽象方法必须出现在抽象类中
    
    }
    class cat extends Animal{
        public void move(){
            System.out.println("猫在床上走");
        }
    }
    

    .

    展开全文
  • 它们的语法区别:1)接口不能有构造方法抽象类可以有。2)接口不能有方法体,抽象类可以有。3)接口不能有静态方法抽象类可以有。4)在接口中凡是变量必须是public static final,而在抽象类中没有要求。忽然有此...

    以举例的方式说到如何区分抽象类和接口,这里我们从Java语法谈起,使我们更加了解这两者的内在区别。它们的语法区别:

    1)接口不能有构造方法,抽象类可以有。

    2)接口不能有方法体,抽象类可以有。

    3)接口不能有静态方法,抽象类可以有。

    4)在接口中凡是变量必须是public static final,而在抽象类中没有要求。

    忽然有此一文,是因为同学疑惑道:抽象类居然还有构造方法,又不能直接用来new。我的解释是平时在抽象类中对于构造方法的存在,没有什么印象,是因为IDE默认为你生成了一个无参构造方法,也可以显式地写出构造方法,这个构造方法,是用来被子类调用的,因为任何子类都必须调用从Object开始的所有父亲的构造方法,才算完成初始化工作。那么我引申一下,问他们,接口有构造方法吗?他们的理解,抽象可以有,为什么接口不可以有?!那么在接口里写入构造方法时,编译器提示:Interfaces cannot have constructors。这又何解?

    从语法的角度来说,抽象类必须有构造方法,而接口严禁有构造方法,这本身也说明了它们性质的不同。抽象类是一个类,别的类是用关键字 extends 来继承下来,并扩展的,有非常强的is-a的关系,这种关系一般来说符合里氏代换原则。而接口,是被其他类用关键字 implements 来实现接口定义的方法的。如果没什么区别,何必整出两个不同的关键字。  接口只是定义功能和行为规范,如果一个类实现了一个接口,那么这个类必须遵守这个接口的方法约定,但没有is-a的关系。把墙壁上的“小学生行为规范”想象成一个接口,那么是小学生必须遵守这个约定,但小学生不是“行为规范”。

    构造方法是用来在对象初始化前对对象进行一些预处理的,提供了实例化一个具体东西的入口。接口只是声明而已,不一定要进行什么初始化,就算要进行初始化,也可以到实现接口的那一些类里面去初始化。接口只是用来表述动作,表述规范来的,可以new一台computer,但我们无法new一个IDE、SATA、PCI、PS-2。因此,接口要构造方法何用?接口是一种规范,被调用时,主要关注的是里边的方法,而方法是不需要初始化的,类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器的调用次序,构造器是属于类自己的,不能继承,因为是纯虚的,接口不需要构造方法。而抽象类是具体类的祖先,即使是石器时代,也总要干些初始化的工作,抽象类虽然是不能直接实例化,但实例化子类的时候,就会初始化父类,不管父类是不是抽象类都,都会调用父类的构造方法,初始化一个类,先初始化父类,有没有说初始化接口。

    1)Java中抽象类和接口中有构造方法吗?

    在接口里写入构造方法时,编译器提示:Interfaces cannot have constructors。

    A. 构造方法用于初始化成员变量,但是接口成员变量是常量,无需修改。接口是一种规范,被调用时,主要关注的是里边的方法,而方法是不需要初始化的,

    B. 类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器链的调用次序

    C. 构造器是属于类自己的,不能继承。因为是纯虚的,接口不需要构造器。

    在抽象类中可以有构造方法,只是不能直接创建抽象类的实例对象,但实例化子类的时候,就会初始化父类,不管父类是不是抽象类都会调用父类的构造方法,初始化一个类,先初始化父类。

    A.方法名与类名相同;

    B.没有返回类型(例如return、void等);

    C.不能被static、final、native、abstract和synchronized修饰,不能被子类继承。

    D.父类的构造方法不能被子类调用,可以通过super语句调用父类的构造方法。

    E.构造方法可以重载,以参数的个数,类型,顺序,分为空参构造方法和有参构造方法。

    注:

    抽象类中不一定有抽象方法,抽象方法一定存在于抽象类中。

    继承抽象类的可以是普通类,但必须重写抽象类中的所有抽象方法,也可以是抽象类,无需重写抽象类中的所有抽象方法。

    注:

    可以说是一种特殊的抽象类,里面的方法全是抽象方法。

    子类实现接口必须对接口中的方法全部重写。

    1)接口不能有构造方法,抽象类可以有。

    2)接口不能有方法体,抽象类可以有。

    3)接口不能有静态方法,抽象类可以有。

    4)在接口中凡是变量必须是public static final,而在抽象类中没有要求。

    展开全文
  • 简单来说,接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类可以有私有方法或私有变量的,另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法...

    简单来说,

    接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,

    另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

    还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.

    1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface.

    2.在abstract class

    中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是

    static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。

    3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。

    4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。

    5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

    6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。

    7.接口中的方法默认都是 public,abstract 类型的。

    展开全文
  • 抽象类和抽象方法定义及讲解?

    千次阅读 多人点赞 2019-02-26 17:26:23
    (2)抽象类可以包含抽象成员,但非抽象类中不可以。 (3)如果一个非抽象类抽象类中派生,则其必须通过覆盖来实现所有继承而来的抽象成员。 Java 中声明抽象类时需要使用abstract 关键字,具体语法格式如下:...
  • 同时抽象方法所在的类也要用abstract定义,表示抽象类。 举例:定义一个抽象类抽象类中没有具体实现,因此抽象类不能直接实例化对象 abstract class Person{ private String name;//姓名属性 ...
  • 抽象方法必须在抽象类中吗

    千次阅读 2021-03-11 10:44:32
    抽象方法必须在抽象类中吗2020-07-01 15:01:18文/叶丹1、抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。2、Final类中的属性和方法都必须被final修饰符修饰。3、最终类不能派生子类,最终方法不能被...
  • 什么是抽象类?怎么定义

    千次阅读 2021-09-01 09:47:26
    什么是抽象类?怎么定义?这是属于java技术里面的一个知识点,本期教程就是围绕这个问题做的相关介绍,当定义一个类时,常常需要定义一些成员方法描述类的行为特征,但有时这些方法的实现方式是无法确定的。例如,在...
  • 抽象类中的抽象方法

    千次阅读 2019-12-11 14:56:16
    当多个子类继承同一个抽象类的时候,有些共同的属性,不需要子类特别实现的可以定义为同一个抽象方法,使用的时候子类直接调用即可。 比如抽象父类内部有个单例的静态的抽象方法c,有A,B两个子类都继承该类,...
  • 抽象类一定有抽象方法吗?我来说说吧,静态是属于字节码的;一个抽象类可以没有抽象方法,只是为了不让别人来实例化它; 以上两点可以说明,...总结就是:抽象类可以定义静态方法,只是抽象类自己不能实例化,所...
  • Java抽象方法抽象类

    千次阅读 2022-04-22 15:41:00
    // 定义抽象方法 public abstract void run(); } 把一个方法声明为abstract,表示它是一个抽象方法,本身没有实现任何方法语句。因为这个抽象方法本身是无法执行的,所以Person无法被实例化。并且编译器会报错...
  • 接口中只能定义常量和抽象方法,对。在Java语言中,接口是一个抽象类型,是抽象方法的集合,通常以关键字interface来声明。一个通过继承接口的方式,从而来继承接口的抽象方法。接口中只能定义常量和抽象方法,对...
  • 一、抽象类与抽象方法定义 抽象类:只在普通类的基础上扩充了一些抽象方法 抽象方法:只声明而未实现的实体(即抽象方法没有方法体) 所有的抽象方法和抽象方法所在的类都要使用abstract关键字定义,用abstract...
  • 011 抽象类必须要有抽象方法吗?

    千次阅读 2021-02-28 14:53:53
    (有抽象方法就是抽象类,是抽象类可以没有抽象方法)解释:抽象方法:java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不...
  • java抽象类可以被继承吗?

    千次阅读 2021-03-06 06:39:35
    抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。java抽象类可以被继承吗?抽象类可以被继承。抽象类除了不...
  • Java抽象类和抽象方法如何定义

    千次阅读 2020-11-18 23:46:06
    具体的类是可以被初始化为对象的,在类的声明前面加上抽象类关键词abstract,则该类就会成为一个抽象类。 abstract public class Canine extends Animal { public void roam () {} } 编译器不会让你初始化抽象类,...
  • Java抽象类/抽象方法定义及其特性详解

    千次阅读 多人点赞 2019-09-28 18:37:53
    类的继承结构中,越往上的类越具有通用性,也就越抽象。当它抽象到一定程度,就变成概念成框架,不能再产生实例化的对象了。例如“交通工具”,就无法用它...与抽象类紧密相连的是抽象方法一它总是用在抽象类或接口中。
  • 抽象类必须要有抽象方法吗?

    万次阅读 2019-07-22 14:36:51
    2.抽象类可以没有抽象方法 3.一个类如果包含抽象方法,那么这个类必须是抽象类,否则编译就会报错。 4.最关键的一点就是如果一个类是抽象类,那么这个类是不能被实例化的。 如下: public abstract cl...
  • 抽象类中是否一定要有抽象方法

    千次阅读 2020-06-11 09:20:14
    抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接...抽象类可以没有抽象方法,也可以包含抽象方法,但有抽象方法的类一定是抽象类。 ...
  • C#抽象类和抽象方法(很详细,你值得拥有!!!)

    千次阅读 多人点赞 2020-06-18 19:10:32
    什么是抽象类? 什么是抽象方法? 抽象类和抽象方法有什么特性? 抽象类的使用场景? 抽象类的作用? 抽象类和接口的区别? 抽象类和抽象方法怎么声明? 抽象类和抽象方法如何使用?
  • C#中的抽象类、抽象属性、抽象方法

    千次阅读 多人点赞 2020-06-10 00:51:31
    前言:本博文讲述了C#面向对象中的抽象类,通过本博文的阅读,读者可以掌握C#抽象类的概念、应用、好处以及一些特性。 文章目录一、抽象类概念二、示例讲解三、抽象类的作用四、使用抽象类的好处五、抽象类总结 一、...
  • 抽象类定义与使用

    千次阅读 2019-04-06 16:16:48
    抽象类定义:抽象类只是在普通类的基础上多了抽象方法。抽象方法用abstract修饰,只有方法声明而没有方法体。 定义一个抽象类: abstract class Main { private int num; //普通方法 public void setNum(int ...
  • 抽象类定义

    千次阅读 2020-12-12 18:32:01
    抽象类定义 抽象类 抽象类表示一个抽象概念 抽象类不能产生实例化对象,必须通过子类实例化。因此抽象类必须有子类的出现。 抽象类能够明确的定义子类需要覆写的方法。 抽象类使用 abstract 关键字声明。 抽象类中...
  • C#中抽象类与抽象方法的详解

    万次阅读 2020-06-17 17:41:11
    抽象类的含义是什么? 抽象类怎么创建? 抽象类的规则有哪些? 抽象方法? 抽象类被运用的意义是什么?
  • JAVA 抽象类,抽象方法

    千次阅读 2021-04-22 21:18:22
    抽象类其实就是给他的所有子类定义了一套模板。子类可以在这个模板上进行扩展。通过抽象类可以严格的限制了子类的设计。如一个抽象类Animal中有一个抽象方法run.public class Animal{public abstract void run();}...
  • Java的抽象类可以定义final方法吗?不太清楚,请指教谢谢
  • 抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的...在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类...
  • 关于那么抽象类中的抽象方法

    千次阅读 2019-02-28 19:57:35
    关于抽象类的问题,就是 抽象类中的抽象方法不能被继承,但是抽象类存在的意义不就是被继承吗?那么抽象类中的抽象方法存在的意义是什么?在抽象类中打出抽象方法的时候并不会报错的。代码如下: public ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 974,464
精华内容 389,785
关键字:

抽象类可以定义非抽象方法吗