JAVA基础知识总结:八
面向对象语言的三大特性;封装、继承、多态
一、面向对象语言特性之封装
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基础知识总结:八的更多相关文章
- Java基础知识陷阱(八)
本文发表于本人博客. 这次我来说说关于&跟&&的区别,大家都知道&是位运算符,而&&是逻辑运算符,看下面代码: public static void m ...
- JAVA基础知识(八)值传递与引用传递
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响 ...
- Java基础知识陷阱系列
Java基础知识陷阱系列 今天抽空把Java基础知识陷阱有关的文章汇总于此,便于大家查看. Java基础知识陷阱(一) Java基础知识陷阱(二) Java基础知识陷阱(三) Java基础知识陷阱(四 ...
- java基础知识文章汇总
将之前的所有关于Java基础知识的随笔,整理成质量较高的十几篇随笔,几乎是好几篇比较零散的随笔合成现在的一篇,自认为还不错. java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规 ...
- Java基础知识(壹)
写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- Java基础知识系列——String
最近晚上没有什么事(主要是不加班有单身),就复习了一下Java的基础知识.我复习Java基础知识主要是依据Java API和The Java™ Tutorials. 今天是第一篇,复习了一下Strin ...
- 学习android学习必备的java基础知识--四大内部类
学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...
- JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...
- java基础知识梳理
java基础知识梳理 1 基本数据类型
随机推荐
- 201521123079《java程序设计》第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 1.实现多线程的方式: 方式一:继承Thread类 a.自定义类继承Thread类 b.在自定义类中重写ru ...
- 解决在Ubuntu终端下使用cURL获取GBK格式的页面出现乱码问题
问题描述 在Ubuntu下使用终端使用cURL去拿一个GBK的页面,发现返回来的内容里面中文都是乱码 解决方法 通过iconv来处理乱码拿到的内容,进行转码,示例如下: $curl http://ww ...
- 全面了解Android热修复技术
WeTest 导读 本文探讨了Android热修复技术的发展脉络,现状及其未来. 热修复技术概述 热修复技术在近年来飞速发展,尤其是在InstantRun方案推出之后,各种热修复技术竞相涌现.国内大部 ...
- [js高手之路] html5 canvas系列教程 - 图片操作(drawImage,clip,createPattern)
接着上文[js高手之路] html5 canvas系列教程 - 文本样式(strokeText,fillText,measureText,textAlign,textBaseline)继续,本文介绍的 ...
- hadoop 基本命令
hdfs相关 1.查看HDFS文件目录 hadoop fs -ls / mapreduce相关 1.查看mapred job mapred job -list hadoop job -list Use ...
- The Twin Towers zoj2059 DP
The Twin Towers Time Limit: 2 Seconds Memory Limit: 65536 KB Twin towers we see you standing ta ...
- 斐波那契数列第N项f(N)[矩阵快速幂]
矩阵快速幂 定义矩阵A(m*n),B(p*q),A*B有意义当且仅当n=p.即A的列数等于B的行数. 且C=A*B,C(m*q). 例如: 进入正题,由于现在全国卷高考不考矩阵,也没多大了解.因为遇到 ...
- MySQL之常用函数
MySQL有如下常用函数需要掌握: 1.数学类函数 函数名称 作用 ABS(x) 返回x的绝对值 SQRT(x) 返回x的非负二次方根 MOD(x,Y ...
- Tensorflow卷积神经网络
卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络, 在计算机视觉等领域被广泛应用. 本文将简单介绍其原理并分析Tensorflow官方提供的示例. ...
- web前端面试官挖的那些坑(js)
题目1: function Foo() { getName = function () { alert (1); }; return this; } Foo.getName = function () ...