一、类

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. mysql重启遇到的问题

    不知道是不是每次更新 MySQL 软件之后都需要执行数据库升级指令?在我进行过的几次软件升级之后,总会在 MySQL 的日志中见到 “[ERROR] Missing system table mysq ...

  2. 【较复杂bfs】洪水-C++

    描述 魔法森林的地图是R行C列的矩形.能通行的空地表示为'.',C君倾倒洪水的地点标记为'*',无法通行的巨石阵标记为'X',海狸的巢穴标记为'D',而画家和三只小刺猬的初始位置标记为'S'. 每一分 ...

  3. python菜鸟基础知识(二)

    3.2 字符串格式化 a = "------------- 我爱涛 -------------" b = "name:" c = "age:" ...

  4. TensorFlow高效读取数据的方法——TFRecord的学习

    关于TensorFlow读取数据,官网给出了三种方法: 供给数据(Feeding):在TensorFlow程序运行的每一步,让python代码来供给数据. 从文件读取数据:在TensorFlow图的起 ...

  5. struct模块(用于对象的压缩)

    6.27自我总结 struct模块 1.struct模块中的函数 函数 return explain pack(fmt,v1,v2-) string 按照给定的格式(fmt),把数据转换成字符串(字节 ...

  6. html+css-->background-img(背景图的设置)

    背景图:(相关验证代码请查看代码,在验证时需将当前不需要验证的代码注释掉)    1.inherit:从父元素继承属性设置    2.background-repeat:平铺(在图片大小小于元素尺寸时 ...

  7. SpringMvc返回JSON出现"$.result.currentLevel"

    "$.result.currentLevel" 问题描述 使用SpringMvc返回一个json数据的时候,会在产生的结果中出现如下的问题:"$.result.curre ...

  8. 《ElasticSearch6.x实战教程》之复杂搜索、Java客户端(下)

    第八章-复杂搜索 黑夜给了我黑色的眼睛,我却用它寻找光明. 经过了解简单的API和简单搜索,已经基本上能应付大部分的使用场景.可是非关系型数据库数据的文档数据往往又多又杂,各种各样冗余的字段,组成了一 ...

  9. eclipse(java windows)

    百度云:链接:http://pan.baidu.com/s/1i4Zjv97    密码:u0qh 官方下载网址:http://www.eclipse.org/downloads/eclipse-pa ...

  10. .NET Core 3.0之深入源码理解HttpClientFactory(二)

      写在前面 上一篇文章讨论了通过在ConfigureServices中调用services.AddHttpClient()方法,并基于此进一步探讨了DefaultHttpClientFactory是 ...