`

黑马程序员--java基础复习--构造函数、this、静态和final

 
阅读更多

---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ---------------------

构造函数

  每个类都默认带有一个无参的构造函数

class Person{
	//public Person(){} 虚拟机默认定义的
}

 如果程序员自己定义了一个构造函数的话,java虚拟机就不会再给类默认定义一个无参的构造函数这时候如果还需要无参的构造函数的,就必须程序员自行定义

Class Person{
	private int age;
	public Person(int age){
		this.age = age;
	}
	public Person(){}
}

 构造函数的访问权限是可以定义的,如果将public 改为private,再加上一些代码,就可以实现单例设计了,单例里边还设计了static和final修饰符,static就是静态。所以先解释一下静态

静态

  静态就是将类的成员定义为静态的,这个成员属于类,而不需要任意对象来获得它的使用权,只要类的.class字节码被加载进内存,类的静态成员就一起被加载进内存中,通过类名就可以直接对其进行调用。那什么时候要用到静态呢?

  如果一个成员变量时属于所有类的对象所共有的,比方说人这个类的对象都有2个眼睛,一个鼻子什么的,就可以将眼睛和鼻子定义成静态。另外比如Color类中的一些表示颜色种类的成员:RED,YELLOW,INK等这些成员属于Color类,将它们定义成静态的要使用颜色的时候,就不用先实例一个Color对象再来获得RED属性了,直接用Color类名就可以调用了。

final

  final可以用来修饰类、成员变量、形参、方法,修饰类的时候表示这个类不可以再被继承,修饰成员变量和形参的时候表示这个变量不能再被改变,其中修饰成员变量时,要么在定义成员变量时初始化赋值,要么在构造函数中赋值,当成员变量是静态的时候,就只能在定义的同时赋值,因为静态成员变量属于类,在类加载进内存的时候就必须存在,而不能等要创建类对象的时候再来初始化。

 

通过单例设计模式,可以很好的理解static和constructor

public class Single {
	//将构造函数私有化,外人无法创建对象
	private Single(){
		
	}
	
	//在类内部定义一个类的对象
	private static Single s = null;
	
	//提供一个方法让外人获得类内部对象,该设计方法为懒汉式设计,在别人要用的时候再创建类对象
	
	public static Single getInstance(){
		//通过双重判断来提高效率
		if(null == s){
			//通过锁来保证只有一个对象被创建
			synchronized (Single.class){
				if(null == s)
					s = new Single();
				return s;
			}
		}
		return s;
	}
}

 

另外,java中的this关键字也要清楚

  this只要注意两个地方:1、在构造函数中出现的this表示被构造的对象

             2、在方法里边出现的this表示调用该方法的对象

  另外,在类内部,系统自带this指针,我们在类内部调用本类方法不用写类名就是因为this这个家伙。

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

0
3
分享到:
评论

相关推荐

    黑马程序员 - Java基础教学 - 05 - 面向对象(1).doc

    在《黑马程序员 - Java基础教学 - 05 - 面向对象(1)》文档中,详细讲解了面向对象的基本概念及其在Java中的应用。 ### 面向对象与面向过程 面向对象和面向过程都是解决问题的思维模式,但面向对象更注重将功能和...

    黑马程序员-----javaBean的操作类学习笔记

    - Java的`Introspector`类可以用来获取JavaBean的元信息,如属性、构造函数和方法。 7. **设计模式应用**: - JavaBean在MVC架构中作为模型(Model)部分,封装业务逻辑和数据。 - 在Java Swing或JavaFX等图形...

    Java语言基础入门教程 Java实训教程 4.类构造函数-this-静态属性方法-instanceof运算符共55页.pptx

    本次教程的主题围绕着Java中的高级类概念展开,具体包括类构造函数、`this`关键字、静态属性和方法、`instanceof`运算符等内容。这些知识点对于深入理解Java面向对象编程至关重要。 #### 二、类构造函数 构造函数是...

    黑马程序员入学Java精华总结

    ### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...

    构造函数与静态块的执行顺序

    在探讨继承中子类与父类构造函数及静态块的执行顺序时,我们首先需要理解构造函数和静态块的基本概念及其在Java中的作用。构造函数主要用于初始化对象的状态,而静态块则是在类加载到内存中时执行的一段代码,通常...

    黑马程序员_Java基础辅导班教程课件[第01期]第15天

    《黑马程序员_Java基础辅导班教程课件[第01期]第15天》是针对初学者设计的一堂深入浅出的Java编程课程,旨在帮助学员巩固和深化Java基础知识。这堂课件涵盖的内容广泛且实用,对于想要在IT行业中开启Java开发旅程的...

    黑马程序员_Java基础辅导班教程课件[第01期]第14天

    总的来说,黑马程序员的Java基础辅导班教程旨在通过第14天的课程,使学员对Java语言有更深入的理解,掌握核心概念和技术,为进一步的Java学习打下坚实的基础。通过不断的实践和练习,学员将能够运用所学知识解决实际...

    黑马程序员毕向东java基础课堂完整版文档

    《黑马程序员毕向东Java基础课堂完整版文档》是一份全面且深入的Java学习资源,由知名教育机构黑马程序员的讲师毕向东倾力打造。这份资料涵盖了从Java编程基础到高级特性的全过程,旨在帮助初学者系统地掌握Java编程...

    黑马程序员入学面试题

    面向对象更加强调通过对象来封装数据和行为,而面向过程则更多关注于函数和过程。 #### 35. 线程之间通信的理解 线程之间通信是指线程之间如何交换数据或同步执行顺序。常用的机制包括wait()、notify()、join()等。...

    黑马程序员java面试宝典 完整版PDF.rar

    11. **算法与数据结构**:虽然Java面试不那么侧重算法,但基础的数据结构(链表、树、图、队列、堆等)和基础算法(排序、查找)依然重要。 12. **网络编程**:TCP/IP协议,HTTP协议,Socket编程,理解网络请求的...

    黑马程序员匠心之作 C++教程_第7阶段-C++实战项目机房预约讲义.rar

    - 构造函数和析构函数:构造函数用于初始化对象,析构函数负责清理对象资源。 4. **模板和泛型编程** - 模板是C++中实现泛型编程的主要工具,允许创建泛型函数和泛型类。 - 泛型编程使代码更具通用性,可以处理...

    《Java基础入门(第3版)》(Java):课后答案-docx文档

    第三章进一步深入到面向对象编程,讨论了访问修饰符(private、default、protected、public)、静态(static)关键字、私有化(private)成员变量、方法重载(参数类型和个数不同)以及`this`关键字的含义。构造方法...

    前端学习笔记-黑马程序员JS

    "前端学习笔记-黑马程序员JS" 本资源主要介绍了 JavaScript 的基本概念和语法,包括变量、数据类型、运算符、流程控制、数组、函数、对象、内置对象等知识点。 变量 在 JavaScript 中,变量可以在三种位置书写:...

    黑马程序员:轻松精通Java学习路线基础篇!.docx

    - this 指代当前对象,常用于区分成员变量和局部变量,或者在构造器中调用其他构造器。 8. static 关键字 - 静态修饰符,用于修饰类的成员(变量和方法),静态成员属于类,不依赖于类的实例。 - 静态块:用于...

    黑马程序员_Java基础辅导班教程课件[第01期]第11天

    "黑马程序员_Java基础辅导班教程课件[第01期]第11天"是一个专门为初学者设计的培训课程,旨在帮助学员深入理解和掌握Java的核心概念。这个课程可能是通过视频形式进行的,结合了理论讲解和实际操作,以便让学习者能...

    黑马程序员Java基础视频辅导班课堂笔记总结Day08

    在继承中,我们可以使用this和super关键字来调用成员变量、成员方法和构造函数。this代表本类对象,super代表父类内存空间标志。 重写(Override)是继承中一个重要的概念,指的是子类覆盖父类方法。子父类中存在...

    java 静态非静态 字段方法 子类父类构造_初始化顺序!

    java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...

    JAVA程序员必读--基础篇

    Java编程语言是软件开发领域广泛使用的编程语言,尤其在企业级应用中占据着主导地位。作为Java程序员,掌握基础..."JAVA程序员必读--基础篇"的CHM文件应该包含了这些内容的详细讲解,是学习和复习Java基础的宝贵资源。

    java代码-使用java解决在Person类的基础上,添加一个带参数的构造函数,参数分别为姓名,性别,年龄的源代码

    java代码-使用java解决在Person类的基础上,添加一个带参数的构造函数,参数分别为姓名,性别,年龄的源代码 ——学习参考资料:仅用于个人学习使用!

Global site tag (gtag.js) - Google Analytics