今天在写代码时,很多类中都要使用log4j,每个类中都要写一句private Logger log = Logger.getLogger(MyClass.class);特别麻烦,所以就想在父类中定义一个protected log对象,供子类使用,网上搜了一下例子,从这些例子中看到了自己很多地方的误解,特此记录一下。
1.abstract类中不必有abstract方法,原basedao不是抽象类,加上abstract修改后,原以为要加一个抽象方法,结果不用做任何修改。
2.abstract类中也可以有构造方法,原以为abstract类不能声明对象,构造方法也是无用的,所以不能有构造方法,而事实是抽象类中是可以有构造方法的,构造方法主要供子类通过super调用,并且在构造子类对象时会调用父类的同参构造方法。
3.abstract类中的this并不是指抽象类本事,而是指子类对象,所以通过this获取对象属性时获取的都是实例化abstract类子类的属性。
最后结果:
public abstract class Test1 {
protected Logger log = null;
public Test1(){
log = Logger.getLogger(this.getClass().getName());
}
}
分享到:
相关推荐
- abstract类只能被继承,子类必须实现其所有的abstract方法,除非子类也是abstract。所以D是正确答案。 6. **要使成员方法成为类方法,应使用修饰符:** - 类方法是静态方法,用`static`修饰,因此正确答案是D:...
抽象类通常在其名称后加上Abstract或Base,如AbstractClass。 3.3 抽象类定义 抽象类用abstract关键字标识,命名应表明其抽象特性,如AbstractCalculator。 3.4 密封类定义 密封类用sealed关键字标识,防止被继承...
因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。 6. heap和stack的区别 栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进...
5. 抽象类、异常类、测试类命名:抽象类名应该以Abstract或Base开头;异常类命名应该以Exception结尾;测试类命名应以被测试类的名称开始,并以Test结尾。这样的命名规范有助于快速识别不同类型的类。 6. 数组命名...
对于抽象类,通常以`Abstract`或`Base`开头,如`BaseUserService`。枚举类以`Enum`为后缀,如`GenderEnum`。工具类以`Utils`为后缀,如`StringUtils`。异常类以`Exception`结尾,如`RuntimeException`。接口实现类...
- 定义类头时可以使用的修饰符包括public、protected、private以及abstract,但此处的选项没有提供public。 10. **Java 与 C++的差别**: - Java的安全机制相对C++更为完善。 - Java的内存管理使用垃圾收集,...
最后,创建类时,我们需要定义类的修饰符(如public、abstract、final)、类名、可能的父类和实现的接口,然后在类体内声明成员变量和方法。理解这些基础知识对于深入学习和掌握Java编程至关重要。
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...
6. 抽象类命名应以Abstract或Base开头,异常类以Exception结尾,测试类命名应以待测试类名称开始,以Test结尾。 7. 包名全小写,使用点分隔符,每个单词尽量使用单数形式,遵循自然语义的英文单词。 8. 避免使用不...
- **抽象类、异常类和测试类**:抽象类以Abstract或Base开头,异常类以Exception结尾,测试类以Test结尾。 - **数组**:类型与中括号紧挨表示数组,如`int[] arrayDemo`,便于阅读。 2. **变量和方法**: - **...
- **抽象类、异常类和测试类的命名约定**:抽象类通常以`Abstract`或`Base`开头,异常类以`Exception`结尾,测试类以被测试类名加`Test`结尾。 - **数组定义**:使用`String[] args`定义数组,避免使用`String ...
19. **abstract class 和 interface**:抽象类可以有构造方法、字段和非抽象方法,可以继承类;接口只有抽象方法和默认方法,不能有字段和构造方法。 20. **heap 和 stack**:堆是存储复杂对象(如数组、对象)的...
关于抽象类、异常类、测试类等特殊类的命名,手册也提供了明确的指导,如抽象类应该以Abstract或Base开头,异常类应以Exception结尾等。 在包名的命名上,手册强调了使用小写,并且通过点分隔符分隔的每个部分都...
6. **抽象类和异常类命名**:抽象类以`Abstract`或`Base`开头,异常类以`Exception`结尾,测试类以待测类名+`Test`结尾。 7. **数组定义**:使用`[]`定义,如`String[] args`,避免使用`String args[]`。 8. **...
- **规范要求**:抽象类命名使用`Abstract`或`Base`开头;异常类命名使用`Exception`结尾;测试类命名以它要测试的类的名称开始,以`Test`结尾。 - **正例**:`AbstractClass`、`MyException`、`LoginTest` 7. **...
- **误解**: - 客户端对象需要知道向谁请求所需的对象以及如何使用这些对象。实际上,在抽象工厂模式中,客户端并不需要知道这些细节,只需要知道如何获取工厂对象并调用相应的创建方法即可。 #### 7. 抽象工厂...
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...
- 抽象类通常以Abstract或Base开头。 - 异常类以Exception结尾。 - 测试类以Test结尾,对应要测试的类名。 - 类名采用upperCamelCase,D选项是正确的命名方式。 8. **变量和包命名**: - POJO类的布尔变量通常...
选项D则是一个常见的误解,实际上在Java中`class`作为内部成员时,不能使用`private`或`protected`等访问修饰符来修饰,因此选项D不正确。 **知识点**: - `class`关键字的概念 - 类与接口的区别 - 内部类的...
- **构造型**:用于标注类的特殊性质,例如`<<abstract>>`表示抽象类。 - **属性**:类中的变量,用于描述类的状态。 - **关联类**:连接两个类的类,常用于表示多对多关系。 #### 使用图的有效方法 - **传达信息**...