一、类

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学习二的更多相关文章

  1. java学习(二)多态中成员变量详解

    今天我总结了一下java多态中成员变量的赋值与调用 举一个我当初做过的小案例: class Fu{ int num; void show(){} } class Zi extends Fu{ //in ...

  2. 《java学习二》jvm性能优化-----认识jvm

    Java内存结构 Java堆(Java Heap) java堆是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域. 在虚拟机启动时创建.此内存区域的唯一目的就是存放对象实例,这一 ...

  3. 《java学习二》并发编程

    多线程创建方式 1.继承thread类,重写run方法 CreateThread createThread = new CreateThread();     ------createThread  ...

  4. Java学习:二 基础

    2014 - 5 - 22 上午 Java对大小写敏感.   点号(.)用于调用方法,Java的能用语法是: object.method(parameters);   Java中的常量声明使用fina ...

  5. java学习(二)--excel导出

    public static String writeFile(String fileName, String[][] content) { WritableWorkbook wwb = null; S ...

  6. java学习二 数据类型自动提升 0x开头的数据是 16进制且是int型

    变量只能定义一次,不能定义两次, 变量的作用域:当前的大括号与子括号才有效 变量的作用:存储值,取值 整型:向上自动升级,向下强制降级 char,byte,shot参与运算时候自动提升为int型 因为 ...

  7. Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)

    最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...

  8. Java学习-046-日志抓取合并后排序问题解决方案之 --- log4j 二次定制,实现日志输出添加延时10ms

    自3月25至今,已经好久没有写学习日志了,今天在写日志抓取合并的小方法,发现抓取后的日志并米有依据系统执行的日志顺序排序.日志抓取排列逻辑如下: 通过日志标识,从各个日志文件(例如 use.log,e ...

  9. Java学习-028-JSON 之二 -- 数据读取

    JSON数据由 JSONObject.JSONArray.key_value 组合而成.通常来说,JSONObject 可以包含 JSONObject.JSONArray.key_value:JSON ...

随机推荐

  1. Redis HyperLogLog用法简介

    (1)HyperLogLog简介 在Redis 在 2.8.9 版本才添加了 HyperLogLog,HyperLogLog算法是用于基数统计的算法,每个 HyperLogLog 键只需要花费 12 ...

  2. 【题解】【合并序列(水题)P1628】

    原题链接 这道题目如果连字符串的基本操作都没学建议不要做. 学了的很简单就可以切,所以感觉没什么难度- 主要讲一下在AC基础上的优化(可能算不上剪枝) 很明显,这道题我们要找的是前缀,那么在字符串数组 ...

  3. [原创]wireshark&xterm安装、配置和使用

    --wireshark && xterm--一.安装wireshark: #apt-get install wireshark二.启动wireshark: #wireshark 或者 ...

  4. 自实现input上传指定文件到服务器

    遇到问题,解决问题,记录问题,成长就是一步一步走出来的. 一.添加 input 标签 我的工作中遇到了,需要上传pdf文件到服务器的需求,而且只能上传pdf文件,accept指定了 pdf 类型. & ...

  5. c语言进阶5-递归算法

    一.  什么是递归 程序调用自身的编程技巧称为递归( recursion). 递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型 ...

  6. 如何处理MySQL经常出现CPU占用率达到99%

    如何处理MySQL经常出现CPU占用率达到99% 情况说明: 最近在自己购买的linux服务器上捣鼓了一个小项目,按理说不存在CPU占用率会达到100%的情况,但事实就是经常出现. 然后,我第一反应是 ...

  7. 为 Editor.md 编辑器插件增加预览和发布按钮

    前言 一直在使用 Editor.md 插件作为博客的编辑器,用着挺好,但是在全屏下编辑时,每次想预览或者保存又必须切换到非全屏状态下才可以点击按钮,用着不舒服,所以花了一点时间在工具栏上增加了预览.保 ...

  8. jsp定义全局变量:读取properties文件

    <%java.util.Properties prop = new java.util.Properties();java.io.InputStream in;in = getClass().g ...

  9. 二、PyTorch 入门实战—Variable(转)

    目录 一.概念 二.Variable的创建和使用 三.标量求导计算图 四.矩阵求导计算图 五.Variable放到GPU上执行 六.Variable转Numpy与Numpy转Variable 七.Va ...

  10. 用ECharts绘制Prometheus图表,实现类似Grafana的自定义Dashboard

      大家一般都是用Grafana自定义Dashboard来监控Prometheus数据的,作者这次尝试用ECharts来绘制Prometheus数据图表,一方面可以减少依赖,另一方面可以将监控界面灵活 ...