精华内容
下载资源
问答
  • 抽象方法必须是非静态的
    千次阅读
    2016-05-16 15:20:31
    抽象方法是没有方法体的,也就是不具体实现什么,如果是静态的意味着可以直接调用,然而这样是没有什么意义的。
    更多相关内容
  • 没有主体的方法称为抽象方法。它仅包含带有半冒号和前面的抽象关键字的方法签名。publicabstractmyMethod();要使用抽象方法,您需要通过扩展其类并为其...访问抽象类的非静态方法由于无法实例化抽象类,因此也无法访...

    没有主体的方法称为抽象方法。它仅包含带有半冒号和前面的抽象关键字的方法签名。public abstract myMethod();

    要使用抽象方法,您需要通过扩展其类并为其提供实现来继承它。

    抽象类

    包含0个或多个抽象方法的类称为抽象类。如果它至少包含一个抽象方法,则必须将其声明为abstract。

    因此,如果要直接阻止类的实例化,可以抽象地声明它。

    访问抽象类的非静态方法

    由于无法实例化抽象类,因此也无法访问其实例方法。您只能调用抽象类的静态方法(因为不需要实例)。

    示例abstract class Example{

    static void sample() {

    System.out.println("static method of the abstract class");

    }

    public void demo() {

    System.out.println("Method of the abstract class");

    }

    }

    public class NonStaticExample{

    public static void main(String args[]) {

    Example.sample();

    }

    }

    输出结果static method of the abstract class

    示例

    访问抽象类的非静态方法的唯一方法是对其进行扩展,在其中实现抽象方法(如果有),然后使用子类对象来调用所需的方法。abstract class Example{

    public void demo() {

    System.out.println("Method of the abstract class");

    }

    }

    public class NonStaticExample extends Example{

    public static void main(String args[]) {

    new NonStaticExample().demo();

    }

    }

    输出结果Method of the abstract class

    展开全文
  • 如上代码,在抽象类中定义static属性是没有问题的,但是定义抽象方法时是不能定义为静态(static)的,否则编译器会报错:The abstract method geta in type abstractTest can only set a visibility modifier, one of...

    1、java的抽象方法为什么不能用static修饰?类抽象方法?

    eedaa21981cdf5f782de6e3373f0303b.png

    如上代码,在抽象类中定义static属性是没有问题的,但是定义抽象方法时是不能定义为静态(static)的,否则编译器会报错:The abstract method geta in type abstractTest can only set a visibility modifier, one of public or protected

    我们只定义静态static方法完全OK,因为静态方法是属于类的,所以静态方法必须满足给类调用,如果通过类无法调用,那么这种静态方法肯定是不对的。为了达到这一要求,static方法就必须有方法体,即已经实现了,也就不是抽象方法了。所以静态(static)方法不能是抽象方法,即abstract不能与static同时修饰方法。即没有类抽象方法。

    如果abstract和static一起修饰已经实现的方法呢?

    780906ea85d92ad60ffe0aa3161c2b47.png

    编译时会报错:Abstract methods do not specify a body

    即只要有abstract修饰方法,则必须定义为抽象方法的格式,否则编译报错。其次,在main方法中调用静态方法编译器没有报错,但是运行时会报错:

    Exception in thread "main" java.lang.Error: Unresolved compilation problems:

    The abstract method out in type abstractTest can only set a visibility modifier, one of public or protected

    Abstract methods do not specify a body

    at firstChap.abstractTest.out(abstractTest.java:6)

    at firstChap.abstractTest.main(abstractTest.java:10)

    2、abstract不能和final一起出现

    abstract修饰的类需要被子类继承,abstract修饰的方法需要子类重写,但是final修饰的类不能被继承,final修饰的方法也不能被子类重写。

    3、abstract不能和private同时出现

    因为abstract修饰的方法必须通过子类重写才有效,而private修饰的方法对子类不可见,即父类中如果存在private abstract void out();而子类中有private void out(){},则它们是两个不同的方法,子类中的out方法不是对父类的重写,而是属于子类独有的方法。

    ef74f7fded31325707d7bb4ca59c2fad.png

    报错:The abstract method out in type abstractTest can only set a visibility modifier, one of public or protected

    展开全文
  • 使用了static 修饰符的方法为静态方法,反之则是非静态方法。 静态方法是一种特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例,而是采用 类名.静态方法 ...
  • 接口中只能定义常量和抽象方法,对。在Java语言中,接口是一个抽象类型,是抽象方法的集合,通常以关键字interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口中只能定义常量和抽象方法,对...

    接口中只能定义常量和抽象方法,对。在Java语言中,接口是一个抽象类型,是抽象方法的集合,通常以关键字interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

    4130247fd2d886b8f24798e0a039566b.png

    接口中只能定义常量和抽象方法,对。

    相关介绍:

    接口

    接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

    接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

    除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

    接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

    (视频教程推荐:java视频教程)

    接口特性接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。

    接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。

    接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

    抽象类和接口的区别

    1、抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

    2、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。

    3、接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。

    4、一个类只能继承一个抽象类,而一个类却可以实现多个接口。

    展开全文
  • 类的继承结构中,越往上的类越具有通用性,也就越抽象。当它抽象到一定程度,就变成概念成框架,不能再产生实例化的对象了。例如“交通工具”,就无法用它来产生一个实例。对应这一现象,Java中提供了抽象类,它只能...
  • 用static声明方法表明这个方法在不生成类的实例时可直接被类调用,而abstract方法不能被调用 必须在子类overriding后才能使用。 native可以与所有其它的java 标识符连用,但是abstract除外。 ...
  • 由于getText()是非静态的,你不能从静态方法调用它。要理解为什么,你必须了解两者之间的区别。实例(非静态)方法适用于特定类型(类)的对象。这些用新的创建如下:SomeClass myObject = new SomeClass();要调用实例...
  • C#中的抽象类和静态

    千次阅读 2018-12-09 20:52:29
    在了解抽象类和静态类之前,先来复习C#中的构造和析构方法: 所谓构造:就是指在调用某个类对某个变量进行实例化操作的时候所执行的方法操作,主要是用来赋值初始化。 所谓析构:就是指当对某个类的变量进行销毁...
  • Java抽象类和抽象方法归纳总结

    千次阅读 2020-06-11 12:26:24
    这篇文章从不同角度归纳...目录一,抽象类关键点二,抽象类与抽象方法的定义1.抽象类2.抽象方法三,注意事项1.关于抽象类的构造函数的问题2.抽象类与常规类的区别3.抽象方法的定义和实现问题4.抽象方法抽象类之间的关
  • 如果子类是非抽象类,则必须实现接口中的所有方法;如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在! 一、抽象类定义 抽象类往往用来表征对问题领域进行分析、设计中得出的抽象...
  • C#抽象类和抽象方法(很详细,你值得拥有!!!)

    千次阅读 多人点赞 2020-06-18 19:10:32
    什么是抽象类? 什么是抽象方法? 抽象类和抽象方法有什么特性? 抽象类的使用场景? 抽象类的作用? 抽象类和接口的区别? 抽象类和抽象方法怎么声明? 抽象类和抽象方法如何使用?
  • 抽象类 定义:不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们。 抽象类的功能:为子类提供功能约束。...可包含成员:普通方法抽象方法、构造函数、成员变量(变量、常量)
  • 如果子类是非抽象类,则必须实现接口中的所有方法;如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!1、抽象类定义抽象类往往用来表征对问题领域进行分析、设计中得出的抽象...
  • 纳尼,接口中还可以定义静态方法了?! 没错,在Java8中新增了很多新的特性,其中就包括可以在接口中添加方法和变量。 首先我们来看下代码 public interface SourceInterface 2 { 3 int a = 5; 4 int b = 10; ...
  • C#允许把类和方法声明为abstract,即抽象类和抽象方法抽象类通常代表一个抽象的概念,他提供一个继承的出发点,当设计一个新的抽象类时,一定是用来继承的。所以在一个继承关系形成的等级结构中,树叶节点应当为...
  • C#方法重写,抽象类,抽象方法

    千次阅读 2019-10-11 23:39:18
    方法重写 顾名思义,方法重写就是要重写一些发法,不过不是手改代码,而是诸如子类中去“重写”父类的一个方法,让子类调用...抽象方法:abstract 重写方法:override 抽象抽象类的概念:是由abstract修饰...
  • Java 抽象方法抽象类与接口
  • C#抽象类与抽象方法

    2011-05-10 16:17:37
    但是一个抽象类里不写抽象方法就没有意义了,既然如此,还不如直接写个普通类? 在一个抽象类里可以不声明抽象方法,这在语法上是没问题的,但实际来说,这样是没有任何意义的。也就是说,你为什么会选择写一个抽象...
  • 抽象方法必须使用abstract关键字. 抽象类的抽象方法不能被实现 抽象类可以有非抽象普通方法 抽象类的对象不能new实例化(即只有具体类的对象才能实例化) 具体子类实现父类的抽象方法时需要使用...
  • 面向对象——抽象类与抽象方法

    千次阅读 2020-04-13 09:26:04
    如果一个类不与具体的食物相联系,而只表达一种抽象的概念,仅是作为其派生类的一个基类,这样的类就是派生类,在抽象类中,声明抽象类中声明抽象方法是,如果加上abstract关键字则为抽象方法。abstract 修饰符可...
  • Java抽象类.docx

    2019-06-13 20:20:07
    Java 抽象类与接口,老师的课件
  • java中接口的使用(默认方法静态方法)

    千次阅读 多人点赞 2020-07-23 21:50:46
    由于最近在学习接口这一...接口是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。 接口是Java语言中的一种引用类型,是方法的"集合",所以接口的内部
  • 抽象方法 : 没有方法体的方法抽象类:被abstract所修饰的类。 //抽象类的语法格式: 【权限修饰符】 abstract class 类名{ } 【权限修饰符】 abstract class 类名 extends 父类{ } ​ //抽象方法的语法...
  • Java 抽象类和接口的区别

    千次阅读 2022-03-15 20:06:50
    接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法; 一个类只能继承一个抽象类,而一个类却可以实现多个接口。 二、设计层面上的区别 a.抽象类是对一种事务的抽象,是对整个类进行...
  • 如果子类是非抽象类,则必须实现接口中的所有方法;如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!1、抽象类定义抽象类往往用来表征对问题领域进行分析、设计中得出的抽象...
  • 书本上上的回答:因为内存中是先有静态内容,再有非静态内容。 上面这个解释太抽象了。很难记得住,还是举个例子比较好。 新建一个类:Coder类 ...所以 【头秃】 是非静态的,由具体对象决定; 【职业】是.
  • java 中普通类继承,抽象类继承,接口类继承,子类一定要重写父类中的方法吗不一定。1. 普通类继承,并非一定要重写父类方法。2. 抽象类继承,如果子类也是一个抽象类,并不要求一定重写父类方法。如果子类不是抽象...
  • 原因如下:如果子类是非抽象类,则必须实现接口中的所有方法;如果子类是抽象类,则可以不实现接口中的所有方法,因为抽象类中允许有抽象方法的存在!1、抽象类定义抽象类往往用来表征对问题领域进行分析、设计中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,264
精华内容 15,305
关键字:

抽象方法必须是非静态的