java学习二
一、类
1、类是模子,确定对象将会拥有的特征(属性)和行为(方法)
2、类的特点:
(1)、类是对象的类型
(2)、具有相同属性和方法的一组对象的集合
3、类是抽象的概念,仅仅是模板,比如说:“手机”,对象是一个你能够看的到、摸得着的具体实体
二、定义类
1、类的重要性:所有java程序都以类class为组织单元
2、定义类的步骤:
(1)定义类名 (2)编写类的属性 (3)编写类的方法
public class 类名{
//定义属性部分(成员变量)
属性1的类型 属性1;
属性2的类型 属性2;
....
方法1;
方法2;
....
}
三、对象
1、使用对象的步骤
(1)创建对象
类名 对象名 = new 类名();
Telphone phone = new Telphone();
(2)使用对象
引用对象的属性:对象名.属性
phone.screen = 5;
引用对象的方法:对象名.方法名()
phone.sendMessage();
四、成员变量和局部变量
1、成员变量
在类中定义,用来描述对象将要有什么
2、局部变量
在类的方法中定义,在方法中临时保存数据
区别:
(1)局部变量的作用域仅限于定义它的方法
(2)成员变量的作用域在整个类内部都是可见的
(3)初始值不同
java会给成员变量一个初始值
java不会给局部变量赋初始值
(4)在同一个方法中,不允许有同名局部变量,在不同的方法中,可以有同名局部变量
(5)两类变量同名时,局部变量具有更高的优先级
五、构造方法
1、使用new+构造方法 创建一个新的对象
2、构造方法是定义在Java类中的一个用来初始化对象的方法,构造方法与类同名并且没有返回值
3、无参数的构造方法
4、有参数的构造方法
5、当没有指定构造方法时,系统会自动添加无参的构造方法
6、当有指定构造方法,无论是有参、无参的构造方法,都不会自动添加无参的构造方法
7、构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法
8、构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值
六、静态变量static
1、java中被static修饰的成员称为静态成员或类成员,它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享,静态成员可以使用类名直接访问,也可以使用
对象名进行访问
注意:静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收。
2、静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
如果想在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量【非静态方法一样】
3、static使用之静态初始化块
注:静态初始化只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的或成员变量
举个例子:
运行结果:
运行结果表明:程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法,由于静态初始化块只在类中加载时执行一次,所以当再次创建hello2时并未执行静态初始化块
七、面向对象特性
三大特性:封装、继承、多态
封装
(1)概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
(2)好处:a.只能通过规定的方法访问数据 b.隐藏类的实例细节,方便修改和实现
(3)步骤 a.修改属性的可见性,【如:private 】 b.创建getter/setter方法【用于属性的读写】 c.在getter/setter方法中加入属性控制语句【对属性值的合法性进行判断】
八、java中的包
1、包的作用:
(1)管理java文件
(2)解决同名文件冲突
2、定义包:package包名
注:必须放在java源程序的第一行
包名间可以使用"."号隔开
eg:com.lala.MyClass
4、包的使用
(1)可以通过import关键字,在某个文件使用其他文件中的类
import com.haha.music.MyClass
(2)java中,包的命名规范是全小写字母拼写
(3)使用的时候不但可以加载某个包下的所有文件
eg:com.haha.*
也可以加载某个具体子包下的所有文件
eg:com.haha.music.*
九、java中的访问修饰符
作用:可以修饰属性和方法的访问范围
十、java中的this关键字
1、this关键字代表当前对象
this.属性 操作当前对象的属性
this.方法 调用当前对象的方法
2、封装对象的属性的时候,经常会使用this关键字
十一、java中的内部类
1、什么是内部类
内部类就是定义在另外一个类里面的类,与之对应,包含内部类的被称为外部类
内部类的主要作用:
(1)内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
(2)内部类的方法可以直接访问外部类的所有数据,包括私有的数据
(3)内部类所实现的功能使用外部类同样可以实现,只是有时候用内部类更方便
内部类可分可以有几种
1、成员内部类
2、静态内部类
3、方法内部类
4、匿名内部类
2、java中的静态内部类
静态内部类是static修饰的内部类,这种内部类的特点是:
(1)、静态内部类不能直接访问外部类的非静态成员,但可以通过new外部类().成员的方式访问
(2)如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
(3)创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名 = new 内部类();
3、java中的方法内部类
方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用
注:由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和static修饰符
十二、继承
1、继承的概念
继承是类与类的一种关系,是一种“is a“的关系
注:java中类是单继承的
2、继承的好处:子类拥有父类的所有属性和方法
复用代码
3、语法规则:
class 子类 extends 父类
例:class Dog extends Animal{
}
4、方法的重写
1、什么是方法的重写
如果子类对继承父类的方法不满意,是可以重写父类继承的方法的,当调用方法时会优先调用子类的方法。
2、语法规则:
a、返回值类型
b、方法名
c、参数类型及个数
都要与父类继承的方法相同,才叫方法的重写
2、继承的初始化顺序
(1)、初始化父类再初始子类
(2)、先执行初始化对象中属性,再执行构造方法中的初始化
”
java学习二的更多相关文章
- java学习(二)多态中成员变量详解
今天我总结了一下java多态中成员变量的赋值与调用 举一个我当初做过的小案例: class Fu{ int num; void show(){} } class Zi extends Fu{ //in ...
- 《java学习二》jvm性能优化-----认识jvm
Java内存结构 Java堆(Java Heap) java堆是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域. 在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例,这一 ...
- 《java学习二》并发编程
多线程创建方式 1.继承thread类,重写run方法 CreateThread createThread = new CreateThread(); ------createThread ...
- Java学习:二 基础
2014 - 5 - 22 上午 Java对大小写敏感. 点号(.)用于调用方法,Java的能用语法是: object.method(parameters); Java中的常量声明使用fina ...
- java学习(二)--excel导出
public static String writeFile(String fileName, String[][] content) { WritableWorkbook wwb = null; S ...
- java学习二 数据类型自动提升 0x开头的数据是 16进制且是int型
变量只能定义一次,不能定义两次, 变量的作用域:当前的大括号与子括号才有效 变量的作用:存储值,取值 整型:向上自动升级,向下强制降级 char,byte,shot参与运算时候自动提升为int型 因为 ...
- Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)
最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...
- Java学习-046-日志抓取合并后排序问题解决方案之 --- log4j 二次定制,实现日志输出添加延时10ms
自3月25至今,已经好久没有写学习日志了,今天在写日志抓取合并的小方法,发现抓取后的日志并米有依据系统执行的日志顺序排序.日志抓取排列逻辑如下: 通过日志标识,从各个日志文件(例如 use.log,e ...
- Java学习-028-JSON 之二 -- 数据读取
JSON数据由 JSONObject.JSONArray.key_value 组合而成.通常来说,JSONObject 可以包含 JSONObject.JSONArray.key_value:JSON ...
随机推荐
- [译]Vulkan教程(33)多重采样
[译]Vulkan教程(33)多重采样 Multisampling 多重采样 Introduction 入门 Our program can now load multiple levels of d ...
- Netty-Channel架构体系源码解读
全文围绕下图,Netty-Channel的简化版架构体系图展开,从顶层Channel接口开始入手,往下递进,闲言少叙,直接开撸 概述: 从图中可以看到,从顶级接口Channel开始,在接口中定义了一套 ...
- tmux终端复用神器简单使用
创建命名Tmux会话(tmux new -s session_name)tmux new -s session_name chongchong 暂退Tmux会话(Ctrl + a d)直接关窗口 返回 ...
- c语言进阶11-经典算法代码
重要算法一览 #include "stdio.h" #include "stdio.h" void main() { int a,b,c,i,n; int x, ...
- MVC设计模式与Java Web经典三层架构
MVC设计模式 MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...
- STL 优先队列 用法
今天做题用到了优先队列 对它的用法还不是很熟悉 现在整理一下. 需要的库 #include<queue> using namespace std; 不过我都用bits/stdc++.h.. ...
- Java中返回值定义为int类型的 方法return 1返回的是int还是Integer&&finally中return问题
在Java中返回值定义为int类型的 方法return 1:中返回的是Integer值,在返回的时候基本类型值1被封装为Integer类型. 定义一个Test类,在异常处理try中和finally中分 ...
- WAMP运行原理
Apache运行原理 Apache的诸多功能都是通过模块进行加载的,自己本身并不具备那么多功能. php文件动态网页请求原理 请求步骤: 1. 用户在浏览器中输入需要访问的网站的域名以及具体要请求的网 ...
- 这 3 个 Set 集合的实现有点简单,那来做个总结吧
Set 接口是 Java Collections Framework 中的一员,它的特点是:不能包含重复的元素,允许且最多只有一个 null 元素.Java 中有三个常用的 Set 实现类: Hash ...
- 【Android】Genymotion 模拟器 Unable to create virtual device
安装 Genymotion 模拟器的时候报了这个错误,如下: 后来找到了解决方法,见下图: 在 Setting -> Network, 勾选 Use HTTP Proxy, HTTP Proxy ...