文档章节

java基础知识点---面向对象

xili80
 xili80
发布于 2017/05/27 17:14
字数 1943
阅读 10
收藏 0

引用:除了基本数据类型之外的引用类型都是引用类型,引用类型都是用两块内存。

构造函数: 1. 构造函数和类名相同并且没有返回值的方法。前边不能加void,否则就变成了普通的类方法。

               2.是用来初始化对象的函数。使用new +  构造方法 创建一个新的对象。

重载: 指的是一个类中可以有多个具有相同的名字但是参数不同的方法(形参的个数,顺序,数据类型至少有一个不一样),和函数的返回类型是否相同无关。

this关键字:  this可以是看作一个变量,它的值是当前对象的引用。

              用法: 1 当成员变量和局部变量重名的时候,如果想在局部变量的方法中访问同名的成员变量时,                  要使用   (表示成员变量)this.name = name(局部变量)。

                         2.当类中有多个重载的构造方法时,在构造方法中可以使用this()来调用其他的构造方法,                    但是必须注意它必须作为构造方法中的第一条语句。

static关键字: 1.被static修饰的成员变量叫做静态成员变量,它是该类的公共变量(系统只为该变量分配一个存储空间,每个对象都要在这个空间来访问该变量。也就是说任何一个对象修改了静态变量,那么其他对象访问的都是该变量修改后的值) 。    可以通过类名的方式(类名.类变量)的方式访问,当然也可以通过类对象名(类对象名.类变量)的方式访问。

                    2.在类的静态方法中可以直接访问静态变量和静态方法,但是不能够直接访问非静态的方法,不能够用this关键字和super关键字。

内存解析:   stack(栈内存):  存局部变量   形参

                    heap(堆内存):  存 new出来的东西        成员变量

                   data  seg(数据区):  存 一切static的东西     字符串常量

                   code  seg(代码区):  存放  类的代码

 继承:   是使用extends 关键字 实现类的继承机制。是指一对象直接拥有另一对象的属性和方法。

           1.父类的构造函数不能被子类继承。

           2.子类不能继承或者访问父类的private属性和方法。

访问机制:       

重写\覆盖:   就是子类不满意父类的方法,对从父类继承来的方法进行重写。

                  1.子类重写的方法必须与父类被重写的方法有相同的方法名称  参数列表  和返回类型。

                 2.子类重写的方法不能使用比父类被重写方法更严格的访问权限。

super关键字:  子类中想使用父类中的非private类型的变量和方法就用super。

                   1.如果想在子类的构造方法中使用父类的构造方法,那么super 的调用语句必须放在子类构造方法的第一行。

                  2.子类的构造方法中必须调用其父类的构造方法。

                      子类在自己的构造方法中使用 super(形参argument_list)调用父类的构造方法;使用this(形参)调用的是本类的构造方法。

Object类:是所有java类的根基类。如果在类的声明中未使用extends关键字指明其根基类那默认基类就为

Object类。

equals方法:1.public boolean equals (Object obj)方法

                      2. Object 的euqals方法定义为 x.equals(y)  当 x和 y是同一个对象的引用时返回true 否则就返回false;  (此时和“==”一样)

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。(如果指向的是堆中同一块内存就返回true)

          

     简单来说重写后的equals就是比较堆中两个对象的内容是否相同;  “==” 比较的是栈中的两个对象指向的是否是同一个对象(就是堆中同一个内存)

                     3。有一些类比如String,  Date 等 重写了Object的equals方法,调用这些类的equals方法,

x.equals(y),当x和y所引用的对象是同一类对象(都是String或者date)并且属性的内容相同时(并不一定时相同的对象),返回值为true,否则返回值是false.  (也就是说只要堆里边的内容相同就返回true)

对象的转型(casting):1.一个基类的引用类型变量可以“指向”其子类的对象。

                                   2.一个基类的引用不可以访问其子类对象新增加的(属性和方法)

               3.可以使用引用 变量 instanceof类名 来判断该引用型变量所“指向”的对象是否属于该类或者是该类的子类。

         4.子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting).

多态: 构成多态的三个条件1.要有继承。  2.要有重写。  3,父类的引用指向子类的对象。就是如下

             [父类] Collection    [引用] c = new       [子类的一个对象或者是方法] ArrayList( );

      这种用法不能够访问子类特有的方法。

抽象类:  1.用abstract 关键字来修饰一个类时,这个类叫做抽象类。用abstract来修饰一个方法时,该方法   叫做抽象方法。

            2.抽象类不能够被实例化。

           3.抽象类可以有也可以没有抽象方法,而有abstract方法的类必须定义为抽象类。也就是说:含有抽象方法的类必须声明为抽象类,抽象类必须被继承,抽象方法必须被重写。

            4.抽象方法没有方法体,而不是方法体为空。也就是说:抽象方法只需声明,而不需要实现。

final关键字: 1.final修饰的类不能被继承。

                      2.final修饰的方法不能被重写。

                    3.final修饰成员变量时可以理解为常量,必须赋以初值(可以在声明的时候赋值也可以在类的构造方法中赋值) 并且该变量不能够改变;        final修饰局部变量时,局部变量只能赋一次值;          final修饰方法中的参数时,该参数的值不能够被改变。

接口:接口就是抽象方法和常量值定义的集合。  从本质上讲,接口就是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有常量和方法的实现。

          1.接口和抽象方法一样,不能进行实例化。(接口是用interface关键字来修饰)。

          2.接口中的每个方法默认修饰都是public  abstract. 这样在实现接口中方法的时候,必须声明方法为

public 的。

          3.接口中所有的变量都是  public  static final.

           4.一个类可以同时实现多个接口,接口之间用“,”分开。      和继承抽象类一样,实现接口后,要么实现其中的所有方法,要么声明为抽象类。

          5.接口可以继承其他的接口,增加新的属性和抽象方法。

toString方法:

toString方法是一个自我描述方法
    方法本身返回的是该对象的实现类的 类名 + @ + hashCode 的值
    可以通过重写toString方法来自定义自我描述

© 著作权归作者所有

上一篇: 异常
下一篇: java--05----IO流
xili80
粉丝 0
博文 14
码字总数 74390
作品 0
郑州
私信 提问
【给初学者】Android学习路线

很多朋友都对学习路线问题感到迷茫,特别是还在上学的朋友们。在这里就详细的为大家介绍一下。 1.Java基础 很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Jav...

Jimmy Xie
2012/09/08
0
1
大数据开发培训:0基础学习Java编程语言有哪些知识点?

Java 技术通用、高效、具有平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网等,学习Java首先要知道学习知识点有哪些。在这就用加米谷大数据培训...

加米谷大数据
2018/07/25
0
0
你必须掌握的 21 个 Java 核心技术!(干货)

点击上方“java进阶架构师”,选择右上角“置顶公众号” 20大进阶架构专题每日送达 51闲来无事,师长一向不(没)喜(有)欢(钱)凑热闹,倒不如趁着这时候复盘复盘。而写这篇文章的目的是想...

Java进阶架构师
05/03
0
0
给Java新手的一些建议——Java知识点归纳(Java基础部分)

  写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,...

Java工程师-10
2017/05/24
509
2
Java培训实战教程之Java基础知识精华部分(一)(二)(三)

Java培训实战教程之Java基础知识精华部分(一)_java概述 =============================================================================Java培训实战教程之Java基础知识精华部分(一)_java概...

黑泽明军
2018/04/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C 语言 二级指针操作文件 柔性数组使用

#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct _info* pInfo;struct _info{int line;int len;char data[0];}info;int getFil......

小张525
38分钟前
0
0
中介者模式

https://blog.csdn.net/jason0539/article/details/45216585

南桥北木
38分钟前
0
0
抽离css以及公共js

分离css 分离css:为何要把 CSS 文件分离出来,而不是直接一起打包在 JS 中。最主要的原因是我们希望更好地利用缓存。 extract-text-webpack-plugin > 1. 假设我们原本页面的静态资源都打包成...

莫西摩西
今天
2
0
Jenkins的配置从节点中默认没有Launch agent via Java Web Start,该如何配置使用

Jenkins的配置从节点中默认没有Launch agent via Java Web Start,如下图所示,而这种启动方式在Windows上是最方便的。 如何设置才能让出来呢? 1:打开"系统管理"——"Configure Global Sec...

shzwork
今天
2
0
BAT面试必问HashMap源码分析

HashMap 简介 HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。 JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈...

别打我会飞
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部