abstract类的定义及final的用法!

原创 2004年06月30日 21:31:00

abstract

以下三种情况要申明abstrat

  • C explicitly contains a declaration of an abstract method.

     类C中的确包含一个已申明为虚函数的函数。

  • Any of C's superclasses declares an abstract method that has not been implemented  in C or any of its superclasses.

     类C的任何一个超类定义了一个虚函数且这个虚函数没有被类C和其任何一个超类所具体化。

  • A direct superinterface  of  C declares or inherits a method (which is therefore necessarily abstract) and C neither declares nor inherits a method that implements it.

      类C的直接超接口或继承的函数(类C当然应该是abstract) 且类C既没定义也没继承并使之具体化。  如下例中的  ColoredPoint   

         

In the example:

a class Point is declared that must be declared abstract, because it contains a declaration of an abstract method named alert. The subclass of Point named ColoredPoint inherits the abstract method alert, so it must also be declared abstract. On the other hand, the subclass of Point named SimplePoint provides an implementation of alert, so it need not be abstract.

A compile-time error occurs if an attempt is made to create an instance of an abstract class using a class instance creation expression .

Thus, continuing the example just shown, the statement:

would result in a compile-time error; the class Point cannot be instantiated because it is abstract. However, a Point variable could correctly be initialized with a reference to any subclass of Point, and the class SimplePoint is not abstract, so the statement:

would be correct.

final

A class can be declared final if its definition is complete and no subclasses are desired or required. A compile-time error occurs if the name of a final class appears in the extends clause  of another class declaration; this implies that a final class cannot have any subclasses. A compile-time error occurs if a class is declared both final and abstract, because the implementation of such a class could never be completed .

Because a final class never has any subclasses, the methods of a final class are never overridden

——在自java文档http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#35962

简述static,final,abstract三者的使用场景与注意事项

简述static,final,abstract三者的使用场景与注意事项
  • qq_21806621
  • qq_21806621
  • 2017年03月14日 22:14
  • 1190

Java关键字final、static、abstract使用总结

一、final 根据程序上下文环境,Java关键字final有“无法改变”或者“终态”的含义,它可以修饰非抽象类、非抽象类成员方法和变量。final类不能被继承,没有子类,final类中的方法默认...
  • u013842976
  • u013842976
  • 2016年05月10日 13:48
  • 1365

final、static和abstract区别和使用

static 和final以及abstract的使用及区别
  • high2011
  • high2011
  • 2015年09月24日 17:03
  • 2794

Java关键字之abstract(抽象类的概念和使用)

1、概述 (1)只给出方法定义而不具体实现的方法被称为抽象方法,抽象方法是没有方法体的,在代码的表达上就是没有“{}”。使用 abstract 修饰符来表示抽象方法和抽象类。 (2)abstrac...
  • eff666
  • eff666
  • 2016年08月26日 08:59
  • 4646

Java中的abstract方法和abstract类的问题

Java中的abstract方法和abstract类的问题 有abstract方法的类一定要用abstract修饰么? 果然以各类没有用abstract修饰但是有abstract方法会怎么样?...
  • evilcry2012
  • evilcry2012
  • 2016年08月19日 16:15
  • 1351

JAVA基础之包装类,static,final,abstract ,接口 和 内部类

包装类:   自jdk5之后,java就提供了自动装箱与自动拆箱功能,大大简化了基本类型与其包装类对象之间的转换过程,当然装换过程中要注意类型的匹配。 public class IntAndInt...
  • liuxins
  • liuxins
  • 2016年05月15日 20:55
  • 4481

java基础学习(7)浅析final,private,public,protected,static等关键以及它们的区别的联系

1.首先来谈final,它一般有三种用法,下面来分别介绍,简单来说定义变量,包括静态的和非静态的,或是定义方法的参数; 定义方法; 定义类。1.1 定义变量包括静态的和非静态的变量。大家都知道用fin...
  • yywan1314520
  • yywan1314520
  • 2016年07月24日 10:34
  • 1344

final关键字的用法

一、final修饰类: 被final修饰的类,是不可以被继承的,这样做的目的可以保证该类不被修改,Java的一些核心的API都是final类,例如String、Integer、Math等 代码举例...
  • yinzhijiezhan
  • yinzhijiezhan
  • 2015年03月18日 16:05
  • 3439

JAVA基础再回首(七)——final关键字、抽象类abstract、接口interface、权限修饰符、导包

JAVA基础再回首(七)——final关键字、抽象类abstract、接口interface、权限修饰符、导包 没有到不了的明天。 嬉皮笑脸面对人生的难。 相信自己,不然你什么都做不了...
  • m366917
  • m366917
  • 2016年08月03日 21:04
  • 1877

外部类、外部接口、类的内部类、类的内部接口、接口的内部类、接口的内部接口 修饰符

/** * 外部类,顶级类 * * Illegal modifier for the class TestClass4; only public, abstract & final are p...
  • CmdSmith
  • CmdSmith
  • 2017年12月15日 15:14
  • 39
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:abstract类的定义及final的用法!
举报原因:
原因补充:

(最多只允许输入30个字)