个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重载. ②子类对象的多态性 1.2 狭义上多态性的体现:①子类对象多态性 1.3 何为子类对象多态性:父类的引用指向子类的对象 1.4 多态性的应用:  虚拟方法调用:编译看左边,运行看右边  编译时:只能看到父类中的方法和属性  运行时:调用的是子类重写的父类的方法 1.5 多态性的说明:   思考…
继承: 1.继承是对某一匹类的抽象,从而实现对现实世界更好的建模. 2.提高代码的复用性. 3.extends(扩展),子类是父类的扩展. 4.子类继承父类可以得到父类的全部属性和方法.(除了父类的构造方法). 5.java中只有单继承,没有像c++这种的多继承.多继承就是为了实现代码的复用性,但引入了复杂性,使系统之间的关系造成混乱. 6.java中的多继承,可以通过接口来实现. 7.如果定义一个类时,没有调用extends,则默认定义的父类是:Java.lang.Object. 8.不同的的…
静态代码块:用staitc声明,jvm加载类时执行,仅执行一次构造代码块:类中直接用{}定义,每一次创建对象时执行.执行顺序优先级:静态块,main(),构造块,构造方法. 构造函数 public HelloA(){//构造函数 } 关于构造函数,以下几点要注意:1.对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的.2.构造函数的作用是用于给对象进行初始化.3.一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次. 构造代码块 {//构造代码块 }…
C++ static 函数的问题 近日读 C++ primer 中static 一章 , 有这么一句话, “静态成员函数的声明除了在类体中的函数声明前加上关键字static 以及不能声明为const 或volatile 之外与非静态成员函数相同出现在类体外的函数定义不能指定关键字static” 为什么不能在类体外指定关键字static , 这样设计的目的是什么,有什么用处? 2# 怎么说呢, 这是一个作用域的问题!成员函数的作用域是类域, 而在类体外加上static不是表示静态函数,表示的是函数…
个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.继承性 1.1 为什么要类的继承性?(继承性的好处) ①减少了代码的冗余,提高了代码的复用性:②更好的扩展性③为多态性的使用提供了前提 1.2 继承的格式:A extends B A类叫做子类 (subClass) B类叫做父类 (superClass,超类,基类) 1.3 子类继承父类以后哪些不同? 子类继承父类以后,就拥了父类中的属性和方法(不认为父类中的构造器可以被继承.但是子类可以用sup…
/** * @author admin * @date 2018/1/12 9:48 * 作用在同一个实例对象上讨论 * synchronized同步方法的测试 * 两个线程,一个线程调用synchronized修饰方法,另一个线程可以调用非synchronized修饰的方法,互不影响 */ public class SynchronizedTest { public synchronized void methodA() { try { for (int i = 0; i < 5; i++)…
执行顺序: 类的静态变量 ↓ 类的静态构造函数 ↓ 类的普通变量 ↓ 基类的静态变量 ↓ 基类的静态构造函数 ↓ 基类的普通变量 ↓ 基类的构造函数 ↓ 类的构造函数…
结论:执行的大致顺序如下, (1) 在一个不存在继承的类中:初始化static变量,执行static初始化块-->初始化普通成员变量(如果有赋值语句),执行普通初始化块-->构造方法 (2)在一个存在继承的类中:初始化父类static成员变量,运行父类static初始化块-->初始化子类static成员变量,运行子类static初始化块-->初始化父类实例成员变量(如果有赋值语句),执行父类普通初始化块-->父类构造方法-->初始化子类实例成员变量(如果有赋值语句)及普…
类装载器ClassLoader 类装载器工作机制 类装载器就是寻找类的节码文件并构造出类在JVM内部表示对象的组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: [1.]装载:查找和导入Class文件: [2.]链接:执行校验.准备和解析步骤,其中解析步骤是可以选择的: [2.1]校验:检查载入Class文件数据的正确性: [2.2]准备:给类的静态变量分配存储空间: [2.3]解析:将符号引用转成直接引用: [3.]初始化:对类的静态变量.静态代码块执行初始化工作.…
类的成员之四:代码块(初始化块)(重要性较属性.方法.构造器差一些)1.代码块的作用:用来初始化类.对象的信息2.分类:代码块要是使用修饰符,只能使用static分类:静态代码块 vs 非静态代码块3.静态代码块:>内部可以输出语句>随着类的加载而执行,而且只执行一次>作用:初始化类的信息>如果一个类中定义了多个静态代码块,则按照声明的先后顺序执行>静态代码块的执行要优先于非静态代码块的执行>静态代码块内只能调用静态的属性.静态的方法,不能调用非静态的结构 非静态代码块…
1.面对对象与面对过程的区别 什么是封装?我看到过这样一个例子: 我要用洗衣机洗衣服,只需要按一下开关和洗涤模式就可以了.有必要了解洗衣机内 部的结构吗?有必要碰电动机吗?有必要了解如何通电的吗? 如果是对于面向过程来说,这些你都得知道."吾生也有涯,而知也无涯",面向对象的封装与庄子的思想遥相呼应:用有限的时间去做更适合的事情. 面对过程是软件开发的先驱者,但其局限性不能满足当今的主流市场需求. 面对过程注重微观,每一步都亲力亲为:面对对象注重宏观,更加偏向于整体的流程. 性能:面对…
面线对象: /* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 D:初始化值不同 成员变量:有默认初始化值 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用.   注意事项: 局部变量名称可以和成员变量名称一样,在方法中使用的时候,…
在编程过程中我们可能会遇到如下这种形式的程序: public class Test { { //// } } 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说代码块是不能单独运行的,它必须要有运行主体.在Java中代码块主要分为四种: 一. 普通代码块 普通代码块是我们用得最多的也是最普遍的,它就是在方法名后面用{}括起来的代码段.普通代码块是不能够单独存在的,它必须要紧跟在方法名后面.同时也必须要使用方…
01final关键字概念 A: 概述 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承, 或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后, 就可以对其中的方法进行重写,那怎么解决呢? 要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变. final是个修饰符,它可以用来修饰类,类的成员,以及局部变量. 02final修饰类义 A: final 修饰类 final修饰类不可以被继承,但是可…
今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 01final关键字概念 A: 概述 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承, 或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后, 就可以对其中的方法进行重写,那怎么解决呢? 要解决上述的这些问题,需要使用到一个关键字final,final的意思为最终,不可变. final是个…
一.Scanner类 1.api简介: 应用程序编程接口 2.Scanner类: 作用:获取键盘输入的数据 位置: java.util.Scanner. 使用:使用成员方法nextInt() 和 next() 分别接收整型和字符串类型数据 //将Scanner类实例化,并用System.in表示键盘输入 Scanner scanner = new Scanner(System.in); //使用成员方法nextInt() 和next() 分别接收整型和字符串类型数据 int num = scan…
初始化代码块 在18篇-类的基本要素中说到,类的三大成员:成员变量.构造方法.方法,初始化代码块是类的第4个成员 初始化块用于对类或者对象的初始化, 一个类的初始化块可以有0-多个,按先后顺序执行 跟实例方法-->类方法.实例变量-->类变量一样,也可以用static修饰初始化块,静态初始化块-->非静态初始化块 初始化块总是先于构造器执行 非静态初始化块 非静态初始化块相当于是对构造器的补充,用于创建对象时给对象的初始化,在构造器之间执行 如果一段初始化代码对所有对象完全相同,且无需接…
概念:代码块是指用{}括起来的一段代码. 根据位置及声明的关键字不同,代码块可分为普通代码块.构造块.静态代码块.同步代码块4种. 1.普通代码块: 直接在方法中或在语句中定义 public class Test2 { public static void main(String[] args) { { //定义普通代码块 int x = 30; //定义局部变量 System.out.println("普通代码块 x="+x); } int x = 100; //与局部变量名称相同…
类初始化相关执行顺序 几个概念说明 代码块的含义与作用 static静态代码块: 一般用于初始化类中的静态变量.比如:给静态的数组或者list变量赋初值.使用static静态代码块进行初始化与直接在定义变量的时候初始化效果是一样的. static静态代码块其实完全可以看做是一个没有名字.没有参数.没有返回值的静态方法,这个静态方法会在main方法执行前执行,而且是主动执行的,不需要任何显示调用,除此之外它和普通的静态方法没有任何区别. 构造块(又称构造代码块) 没有static修饰的代码块: 主…
//执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. //普通代码块:在方法或语句中出现的{}就称为普通代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行” public class CodeBlock01{ public static void main(String[] args){ { int x=3; System.out.println("1…
JAVA静态代码块会在类被加载时自动执行? 一.先看Java静态方法,静态变量 http://www.cnblogs.com/winterfells/p/7906078.html 静态代码块 在类中,可以将某一块代码声明为静态的,这样的程序块叫静态初始化段.静态代码块的一般形式如下: static { 语句序列 } public class staticBlock{ //定义一个普通的main()方法 public static void main(String args[]){ System.…
JAVA之旅(五)--this,static,关键字,main函数,封装工具类,生成javadoc说明书,静态代码块 周末收获颇多,继续学习 一.this关键字 用于区分局部变量和成员变量同名的情况 this的特点 this就代表本类对象 这在我们的set方法里面是有的 public void setName(String name) { this.name = name; } this代表他所在的函数对属对象的引用 现在我们这里有这么一个需求 //公共的 类 类名 public class H…
<pre name="code" class="java">/* 代码块:在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同,可以分为 局部代码块:局部位置,用于限定变量的生命周期. 构造代码块:在类中的成员位置,用{}括起来的代码.每次调用构造方法执行前,都会先执行构造代码块. 作用:可以把多个构造方法中的共同代码放到一起,对对象进行(初始化). 静态代码块:在类中的成员位置,用{}括起来的代码,只不过它用static修饰了. 作…
以前面试总会碰到涉及到类的执行过程的笔试题.下面记录我自己的测试结果: public class ClassA { public static ClassA classa = new ClassA(); static{ System.out.println("ClassA的静态代码块"); } public ClassA(){ System.out.println("ClassA的构造方法"); } { System.out.println("ClassA…
一.回顾学习内容 在前面几篇博客中我我们已经理解了synchronized对象锁.对象锁的重入.synchronized方法块.synchronized非本对象的代码块, 链接:https://www.cnblogs.com/SAM-CJM/category/1314992.html 我们来总结一下,上面几篇讲到内容: 1.创建线程类的两个方式:继承Thread类和实现Runable接口. 2.了解了Thread类的几个基本构造器. 3.启动多线程时要使用start方法,不要直接调用run方法.…
一:静态代码块 注意是代码块,不是静态函数.函数要调用才执行,代码块加载就执行,一般是静态变量的声明与初始化.被static修饰的代码块(赋值.输出操作等).类中静态语句块仅在类加载时被执行一次 如 static int a=1: static { int b=2; System.out.print(b);} 二:构造代码块 构造代码块是指不在类的任何一个方法中的代码.一般为全局变量的声明与初始化.顺序执行的输出语句等等.如果没有static修饰的话,这些代码按照编码时顺序执行. Java会把构…
//执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 //普通代码块:在方法或语句中出现的{}就称为普通代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行” public class CodeBlock01{ public static void main(String[] args){ { int x=3; System.out.println…
这一节我们看一个比較特殊的概念,那就是静态代码块. 前面我们也提到过代码块,就是一段独立的代码空间.那么什么是静态代码块呢?说白了,就是用statickeyword修饰的代码块. 我们来看一个样例: class StaticBlock { static { System.out.println("静态代码块被运行"); } void myPrint() { System.out.println("myPrint方法运行"); } } class StaticBloc…
这一节我们再看一个特殊的代码块.那就是构造代码块. 这里我们简单的通过样例来说明一下: class Person { private String name; { System.out.println("Person类的第一个代码块被运行"); } Person() { System.out.println("无參数构造函数被运行"); this.name = "小宝宝"; } Person(String name) { System.out.p…
3.2类的成员之四:代码块 ①初始化块(代码块)作用:对Java对象进行初始化 ②程序的执行顺序: ③一个类中初始化块若有修饰符,则只能被static修饰,称为静态代码块(static block ),当类被载入时,类属性的声明和静态代码块先后顺序被执行,且只被执行一次. ④tatic块通常用于初始化static (类)属性 class Person { public static int total; static {         total = 100;//为total赋初值 } ………