1.封装:

  封装主要体现在:组装类 和 信息隐藏。

    a.信息隐藏:①访问修饰符:private

          ②方法的实现:get/set方法、run()方法-控制流程

    b.组装类: ①类的定义:属性、构造、行为(方法)、包等

          ②类的使用:new对象、“.”方法、引用类型数组

2.访问修饰符:

  public:    本类、同包(子类 及 非子类) 及 不同包(子类及 非子类)    (全类可调用)

  protected:  本类、同包(子类 及 非子类) 及 不同包(子类)        (同包及子类可调用)

  默认访问修饰符:本类、同包(子类 及 非子类)                 (同包可调用)

  private:    本类                             (仅仅本类可调用)

3.get/set方法的封装体现:

  a.可以只提供get,或者只提供set,把属性变为只读或者只写。

  b.get方法可以提供权限验证;set方法可以提供数据有效性校验。

  c.可以隐藏内部属性的存放形式。

4.继承:

  a.定义:在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方法称为继承。

  b.子类与父类:

    ①关系:is—a

    ②父类(基类、超类):拥有共同的属性、行为

       子类(派生类):拥有特有的属性、行为

    ③关键字:extends

    ④优缺点:由于java中继承都为单继承,优点为层次清晰,缺点为相比多继承丰富度不够(但接口可以弥补这一点)

    ⑤Object:所有类和数组的根类

  c.内存叠加:先生成父类对象部分,再生成子类特有部分,最后形成完整的子类对象。

  d.注意:构造方法不能被继承,更不能被重写。

5.重写与重载:

  a.重写:子类将父类继承来的方法,重新实现一次。(有继承关系的类之间)

  b.重载:在同一个类中,拥有多个同名方法,但参数列表不同,各有各的实现。(同一个类中)

  c.重写必须满足:

    ①方法名必须保持一致

    ②参数列表必须保持一致(个数、类型、顺序)

    ③返回类型必须保持一致

    ④访问修饰符必须大于等于父类

    ⑤子类重写后的方法不能抛出比父类重写前的方法更多的异常。

    注:这里的“更多”不也是指throw后面的异常个数更多,而是指范围更大。

6.toString():

  a.作用:返回一个对象的字符串描述

//全类名+at+引用(哈希码加密后的地址)
com.lovo.bean.Employee@145c859

  b.使用:①当我们打印对象,或者在对对象进行字符串操作时就是在调用该对象的toString()方法。

      ②自于Objiect的toString()返回的是“全类名+at+返回的16进制引用”。我们可以根据需要重写toString()。

7.this 与 super

  a.属性及方法(xxx.):

    ①this代表当前对象;super代表当前对象的父类部分

    ②this能操作定义在本子类上的所有属性和方法;super不能操作定义在本子类上的属性和方法

    ③this和super 都只能操作定义在父类上的被访问修饰符允许访问的属性和方法;

    总结:首选用this,只有当本类中调用被重写方法重写前的效果时,才用super。

8.== 与 .equals

  a.==:判断两个引用是否指向同一个对象。

  b. .equals:判断两个对象在业务上是否相等。(大部分时候需要自己定义重写)

9.final 关键字:

  a.修饰类时:这个类不能被继承(最终类/终态类/太监类)

  b.修饰方法时:该方法不能被重写

  c.修饰变量时:常量,不能被修改

10.static 关键字:

  a.修饰属性:①用法:可以使用 类. 和 对象.

        ②效果:全类共享一个值

        ③内存:在加载期,存放在数据段的静态区里

  b.修饰方法:①用法:可以使用 类. 和 对象.

        ②效果:不能操作到本类的非静态属性或方法,也不能操作this或super对象

        ③机制:因优先加载而不能操作非静态内容。(由于与对象无关,有可能没有对象)

  c.修饰初始化块:静态初始化块(见11条)

  d.修饰类:成员内部类的特例——静态内部类(见13条)

  e.静态的特点:①凡是static的,都跟对象(本类的对象)无关,都是类级别的

         ②凡是static的,都在加载期会有特殊处理

11.初始化块:

  a.实例初始化块:

    ①该代码块在new对象的构造时被自动执行,new一次就执行一次

    ②new对象的构造方法要执行4步,该代码块在第3步之前执行,即在对对象进项初始化之前。

    ③因此现在初始化块中对属性进行赋值,会被第3步的赋值覆盖

{
/*语句块*/
}

  b.静态初始化块:

    ①该代码块在加载class的时候就被自动执行了

    ②一个类只加载一次,所以静态初始化块也只执行一次

    ③所以很多 打开资源、开启链接 的预加载动作可以写到静态初始化块中

static {
/*语句块*/
}

12.内部类:

  a.定义:在java中,还可以在类的内部定义类,这种在类内部定义的类,称为内部类

  b.特点:①一个独立的类,拥有各自的属性、行为、构造等等

      ②独立的一个class文件

      ③同样需要编译

      ④同样可以产生对象

  c.分类:成员内部类(特例:静态内部类)、局部内部类(特例:匿名内部类)

13.成员内部类:

  a.位置:直接写在外部类当中,位置与属性、构造、方法平行

  b.修饰符:可以有访问修饰符,代表是否可以在外部的类使用

       不管带什么访问修饰符,本类(外部类)的所有方法都可以使用

  c.class文件名字:外部类类名+$+内部类类名

  d.在外部使用:首先产生外部类对象、然后使用特殊语法 (外部类.new) 产生内部类对象,然后调用内部类对象的方法

OutClass out = new OutClass();
OutClass.InnerClass1 oi = out.new InnerClass1();

  e.静态内部类——成员内部类的特例:

    在外部使用静态内部类:可以用外类类名直接访问操作,无需产生外部类对象

OutClass.InnerClass2 oi = out.new InnerClass2();

  f.注意:①内部类如果要调用外部类的属性,请书写:

OutClass.this.a = 100;

     ②静态内部类只能使用外部类的静态属性或静态方法,请书写:

OutClass.b = 100;

14.局部内部类:

  a.位置:在java中将类定义在方法的内部,成为局部内部类

  b.修饰符:无访问修饰符

  c.class文件名字:外部类类名+$+序号+内部类类名

  e.使用:直接产生对象

  f.匿名内部类——局部内部类的特例:

    ①class文件名字:外部类类名+$+序号

    ②作用:在产生对象的同时去定义这个类,只能用一次

new Object(){
/*属性*/
/*行为*/
}

  g.注意:局部内部类 及 匿名内部类 不能操作它所在方法的局部变量(非常特殊)

15.多态

  a.宗旨:★相同的行为,不同是实现★

  b.分类:①静态多态:在编译期即确定行为实行的效果

      ②动态多态:在编译期不能确定方法实行的效果,运行之后根据绑定对象的不同才能确定该方法最终执行的效果

  c.实现:静态多态:重载实现

      动态多态:动态绑定、重写实现 (共同使用)

      动态绑定:转型技术、instanceof关键字

16.转型技术

  a.基本数据类型的转型:

    ①自动类型转换——小范围的数据类型往大范围的数据类型转换(无风险/肯定成功)

    ②强制类型转换——大范围的数据类型往小范围的数据类型转换(有风险/丢失精度/无意义)

  b.引用数据类型的转化:(前提:有继承关系)

    ①向上类型转换——自动类型转换(无风险/肯定成功)

    ②向下类型转换——强制类型转换(有风险/可能会抛出异常、终止运行)

    注意:只有运行起来以后,确定时本类对象,或者父类引用指向子类对象才可以成功

17.instanceof关键字(运算符)

  a.作用:用于判断运行时对象的真正类型(即判断某对象是否是某个类的实例)

  b.返回:true 或 false

  c.语法:

/*对象*/ instanceof /*类名*/

18.抽象:

  a.abstract关键字:

    ①修饰方法:表示类有这个方法,但不能这个方法的实现,应该由它的子类去确定 (不能修饰构造、属性)

public abstract void response();

    ②修饰类:表示这个类是抽象类。抽象类不能产生对象!!!它只能当父类!!!

public abstract class Girl{
//TODO
}

  b.注意:①有抽象方法的类,一定是抽象类

      ②抽象类不一定有抽象方法(但失去了抽象设计的意义)

      ③抽象类除了有abstract修饰符,它内部跟普通类一样,可以有:属性、构造、已实现的方法。

JavaOO面向对象中的注意点(二)的更多相关文章

  1. JavaOO面向对象中的注意点

    1.JavaOO宗旨思想: ★万物皆对象,对象因关注而产生★ ☆类是对象的抽取,对象是类的实例☆ 2.JavaOO的三大特征: 封装.继承.多态  (第四大特征 抽象 现还有争议) 3.属性与行为: ...

  2. JavaOO面向对象中的注意点(一)

    1.JavaOO宗旨思想: ★万物皆对象,对象因关注而产生★ ☆类是对象的抽取,对象是类的实例☆ 2.JavaOO的三大特征: 封装.继承.多态  (第四大特征 抽象 现还有争议) 3.属性与行为: ...

  3. JavaOO面向对象中的注意点(三)

    1.接口 a.关键字:interface public interface Serviceable{ //TODO } b.属性:只能是 公共 静态 常量 属性--就算不写这三个关键字,也是默认这种情 ...

  4. PHP面向对象中的重要知识点(二)

    1. __toString: 当对象被打印时,如果该类定义了该方法,则打印该方法的返回值,否则将按照PHP的缺省行为输出打印结果.该方法类似于Java中的toString(). <?php cl ...

  5. [.net 面向对象程序设计进阶] (3) 正则表达式 (二) 高级应用

    [.net 面向对象程序设计进阶] (2) 正则表达式 (二)  高级应用 上一节我们说到了C#使用正则表达式的几种方法(Replace,Match,Matches,IsMatch,Split等),还 ...

  6. 文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式

    本节主要内容: 1.面向对象中的成员 2.成员修饰符 3.特殊成员 4.异常处理 5.设计模式之单例模式 一.面向对象中的成员(类的成员) 类的成员总共可以分为3大类,每类中有不同的分支. 1.总述, ...

  7. 20155322 2016-2017-2 《Java面向对象程序设计》第十二周课堂练习之Arrays和String单元测试

    20155322 2016-2017-2 <Java面向对象程序设计>第十二周课堂练习之Arrays和String单元测试 练习目地 在IDEA中以TDD的方式对String类和Array ...

  8. 探讨 JS 的面向对象中继承的那些事

    最近学了 JS 的面向对象,这篇文章主要是探讨 JS 的面向对象中继承的那些事. JS中继承的特点: 1.子类继承父类: 2.子类可以用父类的方法和属性 3.子类的改变可以不影响父类 下面用一个例子来 ...

  9. 面向对象中特殊方法的补充、isinstance/issubclass/type、方法和函数、反射

    一.面向对象中特殊方法的补充 1.__str__ 能将对象名改成你想要的字符串,但是类型还是类 class Foo(object): def __init__(self): pass def func ...

随机推荐

  1. VsFtpd服务配置简明笔记

    Ftp服务是最常用的文件传输方式,把配置步骤记录下来,以备将来使用. 1.用YUM安装VsFtpd服务:[root@Redis usr]# yum install vsftpd 2.安装完成后启动Vs ...

  2. ionic ios 左滑 白屏

    之前发现ionic在发布ios之后,左滑屏幕的时候会出现界面变白,但是画面原有的位置点击还是有效的,但是点击之后界面是不正确的,返回到上上一步 然后查找资料发现是ios系统内置的左滑动作造成了影响,修 ...

  3. Windows10环境搭建Elasticsearch+Kibana+Marvel

    环境: Windows10企业版X64 Elasticsearch-2.4.1 Kibana-4.6.1 Marvel-2.0+ 步骤: 安装Elasticsearch:官网下载Elasticsear ...

  4. XP---------专区(Windows Exprience)--体验的简写

    待完善中 -------------------------------------- 1.0用u盘安装xp系统 用u盘给自己的或者朋友的电脑装上一个系统. 首先当然是下载一个系统文件,下面是本站的最 ...

  5. logo新

  6. mate标签

    <meta charset='utf-8'> <!-- 优先使用 IE 最新版本和 Chrome -->    <meta http-equiv="X-UA-C ...

  7. grunt安装和使用教程

    grunt的安装 npm intall -g grunt-cli 新建文件夹grunt,在本地文件中添加package.json和Gruntfile.js文件,其中package.json文件的配置如 ...

  8. ecshop 支付

    支付分成两部分 1.订单信息 2.支付日志ID 3.生成支付代码 一次性支付完成 // 支付信息 include_once('includes/lib_payment.php'); $order['l ...

  9. [NHibernate]增删改操作

    目录 写在前面 文档与系列文章 添加数据 删除数据 修改数据 添加修改数据 总结 写在前面 上篇文章介绍了nhibernate的基于面向对象的条件查询.对一个项目来说,增删改查是必不可少的,虽然实现方 ...

  10. Android中finish掉其它的Activity

    在Android开发时,一般情况下我们如果需要关掉当前Activity非常容易,只需要一行代码 this.finish;即可.那么,如果是想要在当前Activity中关掉其它的Activity应该怎么 ...