-
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("猫在床上走"); } }
.
-
Java中抽象类和接口中有构造方法吗?
2021-03-08 05:52:39它们的语法区别: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,而在抽象类中没有要求。
-
Java接口和抽象类的区别?(抽象类中可以定义变量) | 学步园
2021-03-16 10:48:07简单来说,接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法...简单来说,
接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,
另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。
还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如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 关键字,具体语法格式如下:... -
6.Java_抽象类的定义,抽象方法的定义,抽象类的使用原则与相关规定
2018-11-18 18:33:19同时抽象方法所在的类也要用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抽象类中可以定义静态的抽象方法吗?为什么?
2019-01-02 21:04:59抽象类一定有抽象方法吗?我来说说吧,静态是属于字节码的;一个抽象类可以没有抽象方法,只是为了不让别人来实例化它; 以上两点可以说明,...总结就是:抽象类中可以定义静态方法,只是抽象类自己不能实例化,所... -
Java抽象方法和抽象类
2022-04-22 15:41:00// 定义抽象方法 public abstract void run(); } 把一个方法声明为abstract,表示它是一个抽象方法,本身没有实现任何方法语句。因为这个抽象方法本身是无法执行的,所以Person类无法被实例化。并且编译器会报错... -
接口中只能定义常量和抽象方法,对么
2021-03-10 04:19:13接口中只能定义常量和抽象方法,对。在Java语言中,接口是一个抽象类型,是抽象方法的集合,通常以关键字interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口中只能定义常量和抽象方法,对... -
Java--Java中抽象类的定义、抽象方法的定义、抽象类的使用
2019-03-01 12:56:04一、抽象类与抽象方法的定义 抽象类:只在普通类的基础上扩充了一些抽象方法 抽象方法:只声明而未实现的实体(即抽象方法没有方法体) 所有的抽象方法和抽象方法所在的类都要使用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:512.抽象类可以没有抽象方法 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方法吗?
2017-05-29 00:32:33Java的抽象类中可以定义final方法吗?不太清楚,请指教谢谢 -
关于抽象类中的抽象方法和非抽象方法的问题
2019-03-20 11:43:45抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的...在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类... -
关于那么抽象类中的非抽象方法
2019-02-28 19:57:35关于抽象类的问题,就是 抽象类中的非抽象方法不能被继承,但是抽象类存在的意义不就是被继承吗?那么抽象类中的非抽象方法存在的意义是什么?在抽象类中打出非抽象方法的时候并不会报错的。代码如下: public ...