精华内容
下载资源
问答
  • java抽象类命名约定
    2021-04-22 17:48:33

    是的,事实上,如果你看看在

    http://download.oracle.com/javase/6/docs/api/的标准库的javadocs,你会发现,左下框架中的类列表开始抽象类,使用你在问题中提到的命名约定。

    AbstractAction

    AbstractAnnotationValueVisitor6

    AbstractBorder

    AbstractButton

    AbstractCellEditor

    AbstractCollection

    AbstractColorChooserPanel

    AbstractDocument

    AbstractDocument.AttributeContext

    AbstractDocument.Content

    AbstractDocument.ElementEdit

    AbstractElementVisitor6

    AbstractExecutorService

    AbstractInterruptibleChannel

    AbstractLayoutCache

    AbstractLayoutCache.NodeDimensions

    AbstractList

    AbstractListModel

    AbstractMap

    AbstractMap.SimpleEntry

    AbstractMap.SimpleImmutableEntry

    AbstractMarshallerImpl

    AbstractMethodError

    AbstractOwnableSynchronizer

    AbstractPreferences

    AbstractProcessor

    AbstractQueue

    AbstractQueuedLongSynchronizer

    AbstractQueuedSynchronizer

    AbstractScriptEngine

    AbstractSelectableChannel

    AbstractSelectionKey

    AbstractSelector

    AbstractSequentialList

    AbstractSet

    AbstractSpinnerModel

    AbstractTableModel

    AbstractTypeVisitor6

    AbstractUndoableEdit

    AbstractUnmarshallerImpl

    AbstractWriter

    采取任何一个,说第一个,并检查其定义:AbstractAction。它确实实现了Action,它又类似于你的约定。它的子类命名为:ClosedAction,MaximizeAction等。

    更多相关内容
  • Java命名规范

    千次阅读 2021-02-12 20:57:11
    每个单词的第一个字母都大写,来得到大驼峰式命名。除了第一个单词,每个单词的第一个字母都大写,来得到(小)驼峰式命名。为避免歧义,文中小驼峰法统称为驼峰法,大驼峰/帕斯卡法统称为大驼峰法则。1. Package项目...

    驼峰法则:

    将所有字母都小写(包括缩写),然后将单词的第一个字母大写。

    每个单词的第一个字母都大写,来得到大驼峰式命名。

    除了第一个单词,每个单词的第一个字母都大写,来得到(小)驼峰式命名。

    为避免歧义,文中小驼峰法统称为驼峰法,大驼峰/帕斯卡法统称为大驼峰法则。

    1. Package

    项目包命名规则:..。相关项目可使用...的命名法则。

    命名必须全部使用英文小写字母,禁止使用“下划线”等字符。(除常量外,Java命名习惯中均不推荐使用下划线等字符)

    示例:

    com.cnblogs.niceboat.soyteam.anticorruptionsystem

    2. Class/Object、Interface

    类和接口使用大驼峰命名法

    抽象类使用“Abstract”做为类命名的开头

    Exception类命名使用“Exception”做为类命名的结尾

    Test类使用“Test”做为类命名的结尾

    在面向接口编程中,接口的实现类的命名规则为:+"Impl"。禁止使用匈牙利命名法。

    示例(正确):

    接口

    实现类

    HandsomeProvider

    HandsomeProviderImpl

    匈牙利命名法(不推荐):

    接口

    实现类

    IHandsomeProvider

    HandsomeProvider

    3. Method/Function

    方法的命名使用驼峰法,一般使用动词或动词+名词组合。

    设置/获取某个值的方法,命名为setV/getV

    返回长度的方法,命名为length

    判断布尔值的方法,命名为isV

    将对象转换为某个特定类型的方法应该命名为toT

    示例:

    getSecretStage()

    length()

    isEmpty()

    toSpecialFormat()

    4. Variable

    变量的命名使用驼峰法

    示例:

    OpenId

    常量命名使用大写字母并用下划线分割

    示例:

    MAX_SUITABLE_SIZE

    关于驼峰法则的具体命名规范(尤其是涉及到单词缩写),参见此表:

    原文

    驼峰法则

    大驼峰法则

    不推荐

    XML HTTP request

    xmlHttpRequest

    XmlHttpRequest

    XMLHTTPRequest

    new customer ID

    newCustomerId

    NewCustomerId

    newCustomerID

    inner stopwatch

    innerStopwatch

    InnerStopwatch

    innerStopWatch

    support IPv6 on iOS

    supportIpv6OnIos

    SupportIpv6OnIos

    supportIPv6OniOS

    Anglo-Saxon England

    angloSaxonEngland

    AngloSaxonEngland

    Anglo-SaxonEngland

    参考:

    展开全文
  • 重温抽象类的概念  我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑...

    重温抽象类的概念

     我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类。比如new Animal(),我们都知道这个是产生一个动物Animal对象,但是这个Animal具体长成什么样子我们并不知道,它没有一个具体动物的概念,所以他就是一个抽象类,需要一个具体的动物,如狗、猫来对它进行特定的描述,我们才知道它长成啥样。

    在使用抽象类时需要注意几点:

             1、抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。

             2、抽象方法必须由子类来进行重写。

             3、只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方法。

             4、抽象类中可以包含具体的方法,当然也可以不包含抽象方法。

             5、子类中的抽象方法不能与父类的抽象方法同名。

             6、abstract不能与final并列修饰同一个类。

             7、abstract 不能与private、static、final或native并列修饰同一个方法。

    public abstract class Animal {  
        public abstract void cry();  
    }  
      
    public class Cat extends Animal{  
      
        @Override  
        public void cry() {  
            System.out.println("猫叫:喵喵...");  
        }  
    }  
      
    public class Dog extends Animal{  
      
        @Override  
        public void cry() {  
            System.out.println("狗叫:汪汪...");  
        }  
      
    }  
      
    public class Test {  
      
        public static void main(String[] args) {  
            Animal a1 = new Cat();  
            Animal a2 = new Dog();  
              
            a1.cry();  
            a2.cry();  
        }  
    }  
      
    --------------------------------------------------------------------  
    Output:  
    猫叫:喵喵...  
    狗叫:汪汪...  



    展开全文
  • 当我们要完成的任务是确定的,但具体的方式需要随后开个会投票的话,Java抽象类就派上用场了。这句话怎么理解呢?搬个小板凳坐好,听我来给你讲讲。01、抽象类的 5 个关键点1)定义抽象类的时候需要用到关键字 ...

    自从给小白写了两篇科普性质的文章后,我就有点一发不可收拾,觉得很有必要继续写下去。因为有读者留言“鼓励”我说,“二哥,你真的是为小白操碎了心啊!”我容易吗?我。

    当我们要完成的任务是确定的,但具体的方式需要随后开个会投票的话,Java 的抽象类就派上用场了。这句话怎么理解呢?搬个小板凳坐好,听我来给你讲讲。

    01、抽象类的 5 个关键点

    1)定义抽象类的时候需要用到关键字 abstract,放在 class 关键字前。

    public abstract class AbstractPlayer {

    }

    关于抽象类的命名,阿里出品的 Java 开发手册上有强调,“抽象类命名要使用 Abstract 或 Base 开头”,记住了哦。

    2)抽象类不能被实例化,但可以有子类。

    尝试通过 new 关键字实例化的话,编译器会报错,提示“类是抽象的,不能实例化”。

    通过 extends 关键字可以继承抽象类,继承后,BasketballPlayer 类就是 AbstractPlayer 的子类。

    public class BasketballPlayer extends AbstractPlayer {

    }

    3)如果一个类定义了一个或多个抽象方法,那么这个类必须是抽象类。

    当在一个普通类(没有使用 abstract 关键字修饰)中定义了抽象方法,编译器就会有两处错误提示。

    第一处在类级别上,提醒你“这个类必须通过 abstract 关键字定义”,or 的那个信息没必要,见下图。

    第二处在方法级别上,提醒你“抽象方法所在的类不是抽象的”,见下图。

    4)抽象类可以同时声明抽象方法和具体方法,也可以什么方法都没有,但没必要。就像下面这样:

    public abstract class AbstractPlayer {

    abstract void play();

    public void sleep() {

    System.out.println("运动员也要休息而不是挑战极限");

    }

    }

    5)抽象类派生的子类必须实现父类中定义的抽象方法。比如说,抽象类中定义了 play() 方法,子类中就必须实现。

    public class BasketballPlayer extends AbstractPlayer {

    @Override

    void play() {

    System.out.println("我是张伯伦,篮球场上得过 100 分");

    }

    }

    如果没有实现的话,编译器会提醒你“子类必须实现抽象方法”,见下图。

    02、什么时候用抽象类

    与抽象类息息相关的还有一个概念,就是接口,我们留到下一篇文章中详细说,因为要说的知识点还是蛮多的。你现在只需要有这样一个概念就好,接口是对行为的抽象,抽象类是对整个类(包含成员变量和行为)进行抽象。

    (是不是有点明白又有点不明白,别着急,翘首以盼地等下一篇文章出炉吧)

    除了接口之外,还有一个概念就是具体的类,就是不通过 abstract 修饰的普通类,见下面这段代码中的定义。

    public class BasketballPlayer {

    public void play() {

    System.out.println("我是詹姆斯,现役第一人");

    }

    }

    有接口,有具体类,那什么时候该使用抽象类呢?

    1)我们希望一些通用的功能被多个子类复用。比如说,AbstractPlayer 抽象类中有一个普通的方法 sleep(),表明所有运动员都需要休息,那么这个方法就可以被子类复用。

    public abstract class AbstractPlayer {

    public void sleep() {

    System.out.println("运动员也要休息而不是挑战极限");

    }

    }

    虽然 AbstractPlayer 类可以不是抽象类——把 abstract 修饰符去掉也能满足这种场景。但 AbstractPlayer 类可能还会有一个或者多个抽象方法。

    BasketballPlayer 继承了 AbstractPlayer 类,也就拥有了 sleep() 方法。

    public class BasketballPlayer extends AbstractPlayer {

    }

    BasketballPlayer 对象可以直接调用 sleep() 方法:

    BasketballPlayer basketballPlayer = new BasketballPlayer();

    basketballPlayer.sleep();

    FootballPlayer 继承了 AbstractPlayer 类,也就拥有了 sleep() 方法。

    public class FootballPlayer extends AbstractPlayer {

    }

    FootballPlayer 对象也可以直接调用 sleep() 方法:

    FootballPlayer footballPlayer = new FootballPlayer();

    footballPlayer.sleep();

    2)我们需要在抽象类中定义好 API,然后在子类中扩展实现。比如说,AbstractPlayer 抽象类中有一个抽象方法 play(),定义所有运动员都可以从事某项运动,但需要对应子类去扩展实现。

    public abstract class AbstractPlayer {

    abstract void play();

    }

    BasketballPlayer 继承了 AbstractPlayer 类,扩展实现了自己的 play() 方法。

    public class BasketballPlayer extends AbstractPlayer {

    @Override

    void play() {

    System.out.println("我是张伯伦,我篮球场上得过 100 分,");

    }

    }

    FootballPlayer 继承了 AbstractPlayer 类,扩展实现了自己的 play() 方法。

    public class FootballPlayer extends AbstractPlayer {

    @Override

    void play() {

    System.out.println("我是C罗,我能接住任意高度的头球");

    }

    }

    3)如果父类与子类之间的关系符合 is-a 的层次关系,就可以使用抽象类,比如说篮球运动员是运动员,足球运动员是运动员。

    03、具体示例

    为了进一步展示抽象类的特性,我们再来看一个具体的示例。假设现在有一个文件,里面的内容非常简单——“Hello World”,现在需要有一个读取器将内容读取出来,最好能按照大写的方式,或者小写的方式。

    这时候,最好定义一个抽象类,比如说 BaseFileReader:

    public abstract class BaseFileReader {

    protected Path filePath;

    protected BaseFileReader(Path filePath) {

    this.filePath = filePath;

    }

    public List readFile() throws IOException {

    return Files.lines(filePath)

    .map(this::mapFileLine).collect(Collectors.toList());

    }

    protected abstract String mapFileLine(String line);

    }

    filePath 为文件路径,使用 protected 修饰,表明该成员变量可以在需要时被子类访问。

    readFile() 方法用来读取文件,方法体里面调用了抽象方法 mapFileLine()——需要子类扩展实现大小写的方式。

    你看,BaseFileReader 设计的就非常合理,并且易于扩展,子类只需要专注于具体的大小写实现方式就可以了。

    小写的方式:

    public class LowercaseFileReader extends BaseFileReader {

    protected LowercaseFileReader(Path filePath) {

    super(filePath);

    }

    @Override

    protected String mapFileLine(String line) {

    return line.toLowerCase();

    }

    }

    大写的方式:

    public class UppercaseFileReader extends BaseFileReader {

    protected UppercaseFileReader(Path filePath) {

    super(filePath);

    }

    @Override

    protected String mapFileLine(String line) {

    return line.toUpperCase();

    }

    }

    你看,从文件里面一行一行读取内容的代码被子类复用了——抽象类 BaseFileReader 类中定义的普通方法 readFile()。与此同时,子类只需要专注于自己该做的工作,LowercaseFileReader 以小写的方式读取文件内容,UppercaseFileReader 以大写的方式读取文件内容。

    接下来,我们来新建一个测试类 FileReaderTest:

    public class FileReaderTest {

    public static void main(String[] args) throws URISyntaxException, IOException {

    URL location = FileReaderTest.class.getClassLoader().getResource("helloworld.txt");

    Path path = Paths.get(location.toURI());

    BaseFileReader lowercaseFileReader = new LowercaseFileReader(path);

    BaseFileReader uppercaseFileReader = new UppercaseFileReader(path);

    System.out.println(lowercaseFileReader.readFile());

    System.out.println(uppercaseFileReader.readFile());

    }

    }

    项目的 resource 目录下有一个文本文件,名字叫 helloworld.txt。

    可以通过 ClassLoader.getResource() 的方式获取到该文件的 URI 路径,然后就可以使用 LowercaseFileReader 和 UppercaseFileReader 两种方式读取到文本内容了。

    输出结果如下所示:

    [hello world]

    [HELLO WORLD]

    展开全文
  • 自从给小白写了两篇科普性质的文章后,我就有点一发不可收拾,觉得很有必要继续写下去。因为有读者留言“鼓励”我说,“二哥,你真...关于抽象类的命名,阿里出品的 Java 开发手册上有强调,“抽象类命名要使用 Abstra
  • java抽象类和接口详解

    2021-03-01 10:24:12
    抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。一、抽象类我们都知道在面向...
  • 抽象类 “二哥,你这明显加快了更新的频率呀!”三妹对于我最近的肝劲由衷的佩服了起来。 “哈哈,是呀,这次不能再断更了,我要再更...关于抽象类的命名,《阿里的 Java 开发手册》上有强调,“抽象类命名要使用 Abstr
  • java抽象类+继承+super用法和this异同

    千次阅读 多人点赞 2019-01-06 14:57:06
    抽象类顾名思义也是类,其命名也暗示它是在类的基础上加以限制(加强条件)而来 1 定义限制 至少含有一个抽象方法,其余属性,方法皆与普通类一致 抽象方法是用abstract声明的方法,无方法体,专门用来给子类...
  • 阿里巴巴Java开发命名规范

    万次阅读 2017-04-14 16:44:47
    代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例: _name / __name / $Object / name_ / name$ / Object$ 2. 【强制】 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用...
  • Java抽象类与接口

    千次阅读 2016-06-07 11:20:39
    抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。 一、抽象类 我们都...
  • java接口和抽象类的不同

    千次阅读 2021-03-16 16:53:44
    接口与抽象类在语义上区别主要在定义和使用格式上,下面分别介绍抽象类和接口的定义与使用:1, 抽象类的定义和使用格式:在java语言中定义抽象类时,要在关键字class前面加上abstract,格式如下:abstract class ...
  • 1.概述 在OOP这个概念中,所有的对象都是通过类来描述的;但是反过来,并不是所有的类都是用来描述对象的,如果一个类中没有包含足够的信息来描述一个具体的对象,这样的类就是抽象类。...在Java中,抽象类表示的
  • 一篇搞定Java命名规范

    千次阅读 2021-02-12 17:09:50
    好的代码本身就是注释,减少不必要的注释驼峰命名规则大驼峰命名类名全部使用大驼峰ServiceDiscovery、ServiceInstance、LruCacheFactory小驼峰命名方法名,参数名,成员变量,局部变量getUserInfo()、...
  • java提高篇(四)-----抽象类与接口

    万次阅读 多人点赞 2013-10-18 21:04:13
     抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。  一、抽象类  我们都...
  • JAVA命名规范

    千次阅读 2021-02-12 20:45:39
    1.[强制] 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束.2.[强制]代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式.3.[强制] 类名使用UpperCamelCase风格,必须遵守...
  • java抽象类和接口的区别

    千次阅读 2018-11-19 00:00:58
    首先,在java语言中,抽象类和接口在语法方面就是有一些区别的,总结整理如下: 相同点 都是位于较上层的抽象层. 都不能被实例化. 都可以只声明方法,不实现. 不同点 抽象类可以有不抽象的方法,即某个方法有默认的实现...
  • Java实验-多态.docx

    2020-12-13 20:07:56
    建立一个抽象类Shape,其中包含一个抽象方法draw(); 建立两个子类J_Circle和J_Square,继承Shape,分别实现Shape中的抽象方法draw() 建立Test_Shape类,创建一个J_Square类的对象sqare,再创建一个Shape关于J_Circle...
  • java变量名命名规则

    2021-12-20 11:00:19
    文中将会涉及到日常工作中常见的命名示例,如包命名,类命名,接口命名,方法命名,变量命名,常类命名,抽象类命名,异常类命名以及扩展类命名等。我将按照项目工程目录结构,从包,类(接口,抽象类,异常类),方法...
  • JAVA可以使用如下方法来创建基于接口的匿名实现对象 new<接口名>(){ //重写方法 }; package hello2; /** * 创建匿名的接口实现对象:临时创建了一个没有命名的接口实现 * 代码简约化 * */ ...
  • java——抽象类,接口,final

    千次阅读 2018-05-12 20:59:33
    1.抽象类:当父类的一些方法不能确定时,可以用abstract关键字来修饰该方法【抽象方法】,用abstract来修饰该类【抽象类】 Demo52. 当一个子类继承的父类是抽象类的话,需要我们在子类中把抽象类中所有的抽象方法...
  • java里实体命名方式(VO,BO,PO)

    千次阅读 2020-05-09 14:16:11
    但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。 BO(business object) 业务对象 从业务模型的角度看,见UML元件领域模型中的领域对象。封装业务逻辑的...
  • java命名空间的方法

    2021-03-04 01:09:48
    Java装载器是Java动态性的核心,本文将向大家简要介绍Java装载器,及相关的parentdelegation模型,命名空间,运行时包等概念,同时讨论一些在学习中容易混淆的问题。装载器的功能及分类顾名思义,装载器...
  • Java抽象类与接口

    千次阅读 2016-06-22 10:09:13
     抽象类与接口是Java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。  一、抽象类  ...
  • java命名规范

    千次阅读 2021-02-12 12:48:41
    一,java文件命名规范1.包名(package)命名必须全部使用英文小写...2.Class/Object、Interface类和接口使用大驼峰命名法抽象类使用“Abstract”做为类命名的开头Exception类命名使用“Exception”做为类命名的结尾...
  • Java 接口和抽象类区别

    万次阅读 多人点赞 2011-11-01 08:56:18
    一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体...
  • Java基础学习:抽象类和接口

    千次阅读 多人点赞 2020-06-07 22:56:16
    抽象类和接口_抽象类和抽象方法 抽象类是普通的类与接口之间的一种中庸之道,尽管你可能在构建某些未实现方法的类是,第一想法可能是创建接口,但是抽象类仍旧是用于此目的的一种重要而必须的工具,因为你不可能总是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 124,079
精华内容 49,631
关键字:

java 抽象类命名

java 订阅