面向对象语言的三大特性;封装、继承、多态

一、面向对象语言特性之封装
1.什么是封装?
一个类中某些属性,如果不希望外界直接访问,我们可以将这个属性作为私有的,可以给外界暴露出来一个访问的方法
使用封装解决私有化的问题

私有化使用private关键字

2.private的使用
1>修饰成员变量,表示这个成员变量只能在当前类中被访问
2>修饰成员方法,表示这个方法只能在当前类中被调用

3.get/set方法
对于private修饰的成员变量,如果要在外界使用,则使用get和set方法进行取值和赋值

语法
get------获取值
访问权限修饰符 返回值类型(成员变量的类型)getXxx() { 例如:public int getAge() {}
}

set-----赋值
访问权限修饰符 void setXxx(成员变量类型 变量名称) { 例如:public void setAge(int a){}
}

4.this关键字

this表示的是对当前对象的引用

1>this.属性:访问本类中的成员变量
总结:一般情况下,当私有变量的set方法中参数名称和成员变量相同的时候,使用this进行区分,有参构造方法中也是同样的道理(当局部变量名和成员变量名相同时,this表示的是成员变量名)

2>this.方法:访问本类中的方法

3>this():访问本类中的构造方法

注意:a.this()只能写在构造方法中
b.this()只能出现在其他构造方法中执行语句的第一行
c.this()具体调用的是哪个构造方法,取决于所传的参数

5.static关键字
1>静态成员变量
由static修饰的成员变量被称为静态成员变量
语法:访问权限修饰符 static 数据类型 变量名称;

特点:
a.静态成员变量是属于类的,通过 类名. 的方式和 对象.的方式都可以进行访问
b。静态成员变量的声明出现在实例之前(静态成员变量随着类的字节码文件加载到JVM中,且只会加载一次)
c.使用类和不同对象访问的静态成员变量都属于同一块内存空间

2>静态方法

特点:
a.静态方法是属于类的,通过类名.的方式访问
b.静态方法优先于实例被加载到JVM中,与静态成员变量类似
c.在同一个类中,静态方法只能访问静态方法

什么时候使用静态?
当所有的对象需要共享数据的时候,就定义成静态成员变量----静态成员变量
对于一些普遍或者需要多次使用的功能,我们将它抽取成方法的时候就声明成静态方法

3>静态代码块
什么是代码块?
在类中独立存在的语句块,可以有多个,位置随意{}
什么是静态代码块?
被static修饰,直接出现在类中的语句块
语法:static {
//执行语句

}

用法:a.静态代码块用于为类的属性进行初始化
b.静态代码块是属于类的,随着类的加载而运行,每个静态代码块只会执行一次,静态代码块的执行优先于main函数

扩展:
4>普通代码块:在方法或者语句中出现的{}
普通代码块和一般语句的执行顺序由他们在代码中出现的顺序决定

5>构造代码块:直接在类中定义,且没有加static关键字的代码块

6。单例
单例是一种设计模式,
什么是设计模式?
前人总结的用来解决特定问题的方案
Java中有23中设计模式,常用的有单例设计模式,工厂设计模式

什么是单例设计模式?

在程序运行过程中,确保某一个类只有一个实例(对象),不管在哪个模块获取这个类的对象,获取到的都是同一个对象

实现方式:
a.懒汉式(饱汉式)

b.饿汉式

区别:a.懒汉式在一定程度上节约内存,但是数据是不安全的(线程不安全)
b.饿汉式,不节约内存,但是数据比较安全


7.包(package)
用来组织文件而存在的,和文件夹的功能相同
语法:package xx.yy.zz ---->class文件的存放位置

编译命令:javac -d . Java源文件名称(只要类中使用了package关键字)

注意:a.类编译生成的class文件存在于对应的包下
b。一般情况下,不同的类编译生成的class文件必须存在于同一个包下才能相互访问
c.当不同类的class文件存在于不同包下的时候,要相互访问,则使用import,格式:import 包名.文件名称

JAVA基础知识总结:八的更多相关文章

  1. Java基础知识陷阱(八)

    本文发表于本人博客. 这次我来说说关于&跟&&的区别,大家都知道&是位运算符,而&&是逻辑运算符,看下面代码: public static void m ...

  2. JAVA基础知识(八)值传递与引用传递

    值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响 ...

  3. Java基础知识陷阱系列

    Java基础知识陷阱系列 今天抽空把Java基础知识陷阱有关的文章汇总于此,便于大家查看. Java基础知识陷阱(一) Java基础知识陷阱(二) Java基础知识陷阱(三) Java基础知识陷阱(四 ...

  4. java基础知识文章汇总

    将之前的所有关于Java基础知识的随笔,整理成质量较高的十几篇随笔,几乎是好几篇比较零散的随笔合成现在的一篇,自认为还不错. java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规 ...

  5. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  6. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

  7. Java基础知识系列——String

    最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...

  8. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

  9. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  10. java基础知识梳理

    java基础知识梳理 1 基本数据类型

随机推荐

  1. python之socket编程------粘包

    一.粘包 什么是粘包 只有TCP只有粘包现象,UDP永远不会粘包 所谓粘包问题主要还是因为接收方不知道之间的界限,不知道一次性提取多少字节的数据所造成的 两种情况发生粘包: 1.发送端需要等缓冲区满才 ...

  2. python import xxx 与 from xxx import xx 模块引入的区别

    有如下脚本script1.py: A='aaaa'B='bbbb'C='cccc'print A,B,C 1.命令行交互模式下使用import 导入方式1: >>>import sc ...

  3. KMP算法的来龙去脉

    1. 引言 字符串匹配是极为常见的一种模式匹配.简单地说,就是判断主串TT中是否出现该模式串PP,即PP为TT的子串.特别地,定义主串为T[0-n−1]T[0-n−1],模式串为P[0-p−1]P[0 ...

  4. WILL吃桃_KEY

    WILL 吃桃 (peach.pas/c/cpp) [ 题目描述] Will 很喜欢吃桃, 某天 Will 来到了一片森林, 森林中有 N 颗桃树, 依次编号为 1,2,„,N.每棵树上有数量不等的桃 ...

  5. sql server 2000的安装

    一.安装sql 二.启动sql 三.查看sql版本 RTM版本,需要打补丁 四.安装SP4

  6. zoj1797 Least Common Multiple 最小公倍数

    Least Common Multiple Time Limit: 2 Seconds      Memory Limit: 65536 KB The least common multiple (L ...

  7. open() close()

    open() 方法可以查找一个已经存在或者新建的浏览器窗口. 语法: window.open([URL], [窗口名称], [参数字符串]) 每个参数必须用引号 参数说明: URL:可选参数,在窗口中 ...

  8. ssi服务器端指令详解(shtml)

    你是否曾经或正在为如何能够在最短的时间内完成对一个包含上千个页面的网站的修改而苦恼?那么可以看一下本文的介绍,或许能够对你有所帮助. 什么是SSI? SSI是英文Server Side Include ...

  9. 客户机中PLSQL DEV访问虚拟机中的ORCLE11g,错误百出!

    客户机中PLSQL DEV访问虚拟机中的ORCLE11g,错误百出! 创建时间: 2017/10/14 18:44 作者: CNSIMO 标签: ORACLE 忙了一下午,只有两个字形容:麻烦!   ...

  10. Spring读书笔记——bean解析

    前情回顾 上篇<Spring读书笔记--bean加载>我们从代码角度介绍了有哪些类负责解析XML文件,又是如何一步步从XML格式脱变成我们熟悉的bean的,直到DefaultBeanDef ...