一、类

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. 7.30考试password

    先说地球人都看得出来的,该数列所有数都是p的斐波那契数列中所对应的数的次幂,所以一开始都以为是道水题,然而斐波那契数列增长很快,92以后就爆long long ,所以要另谋出路,于是乎向Ren_iva ...

  2. Lake Counting-C++

    Description Due to recent rains, water has pooled in various places in Farmer John's field, which is ...

  3. Java 常见面试题整理

    操作系统 说一下线程和进程,它们的区别 同步和异步的区别 阻塞和非阻塞的区别 操作系统中死锁的四个必要条件 mmap和普通文件读写的区别,mmap的注意点 CPU密集型和IO密集型的区别 Linux ...

  4. C#学习书单

    [入门] (1)<C#入门经典> (2)<牛腩新闻发布系统> [深入] (1)<CLR via C#(第4版)> (2)<深入理解C#(第3版)> [C ...

  5. window平台下 cmd 命令窗口的编码设置

    在WINDOWS上打开控制台界面,发现默认的编码是GBK,这样有时候写完的代码运行的时候就会出码,基于此,查阅各方资料,终于得出两种方案. 一.临时解决方案(只针对本次会话有效) 1. 打开控制台,输 ...

  6. 分享一个 Linux 环境下,强力的Python 小工具

    场景 Linux 用户,经常需要在终端查看一些数据,从文件里看 或者网络协议获取数据并查看. 比如,查看文件里的json数据:比如,查看etcd里存下的数据. 如果直接看cat 或者 curl 得到的 ...

  7. httpclient 方式提供接口

    在后台写好自己的方法: 打开shiro验证,设置url访问: 提供包调用http方式连接后台获取数据: String url = getUrl(); HttpClient client = new H ...

  8. linux初学者-Apache篇

     linux初学者-Apache篇          Apache提供了超文本传输协议http,httpd是Apache超文本传输协议的主服务器.下文将对httpd的安装和配置进行简单的叙述.     ...

  9. 【TensorFlow 3】mnist数据集:与Keras对比

    在TF1.8之后Keras被当作为一个内置API:tf.keras. 并且之前的下载语句会报错. mnist = input_data.read_data_sets('MNIST_data',one_ ...

  10. [机器学习] kears入门:用单层网络实现玩具回归

    learn from: 莫烦教keras的视频: https://morvanzhou.github.io/tutorials/machine-learning/keras/2-1-regressor ...