`变量:

成员变量:又叫全局变量,定义在类中,方法外面.

1).类成员变量.   使用Static

2).实例成员变量.  没有使用Static.

局部变量:出了成员变量,其他的都是局部变量.

1).方法内部的变量.

2).方法的形参.

3).代码块中的变量.一对花括号中的变量.

---------------------------------------------------------------------------------------------------------------------

变量的初始值:

成员变量默认是有初始值的.

局部变量:没有初始值,所以必须先初始化才能使用.否则会报错尚未初始化.初始化才会在内存中开辟空间.

----------------------------------------------------------------------------------------------------------------------

变量的作用域:

变量根据定义的位置不同,也决定了各自的作用域是不同的.看{}

成员变量:在整个作用域中都有效.

局部变量:从开始定义的位置开始到紧跟着结束的{}为止.

成员变量可以先使用后定义. 局部变量必须先定义而后使用

这里的先使用后访问是眼睛中看到的先后顺序.  如果要调用System.out.println(x)则一定会访问方法doWork()

doWork没有加static修饰.访问doWork方法必须用对象去访问,在构建对象的时候 ABC s = new ABC();  调用 s.doWork(x)    String x 已经存在,在new对象ABC()存在.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

变量的生命周期:    

package:

语法:  package 子包.子子包      必须把该文件作为java文件中所有代码之前.

java常见包:

全限定名称:包名+类名.

import关键字:

package在第一行, import在package下面.

可以写多个import.只能写一个package.

通配符(*)    import java.until.*   引入until包下所有在该文件中使用到的类, 此时的*表示类名.

----------------------------------------------------------------------------------------------------------------------------------------------

静态导入(static import):

static成员名可以用通配符表示

import static java.until.Arrays.*;

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

封装思想:

封装setAge确保了age的安全性.

封装其实就是让有些类看不到一些类做了什么事情.所以用权限修饰符来暴露和隐藏.

private:类访问权限. 只能在本类中访问,离开本类无法访问. 可以通过间接访问.  例如:通过方法调用a, 然后将a赋值给age.访问了 private age

不写访问权限(缺省):包访问权限.只有在同一个包中才能访问.

protected:子类访问权限.同包可以访问,即使不在同一包,有继承关系也可以访问.

public:表示全局的.  可以在当前项目中任何地方访问.

如果父类仅仅暴露给子类,用protected.

JAVAbean:

不要把成员变量叫做属性,属性和字段是两种完全不同的东西.

如果操作的字段是boolean类型,  此时不应该叫getter方法,把getName编程isName.

setter方法:

每一个字段都得提供一对setter/getter.

   以后使用Eclipse工具之后, getter/setter工具都是自动生成的.

This关键字:  this指字段中的变量.

什么是this:

this主要存在于两个位置:

1).构造器中:

表示当前创造的对象.

如:  User u1 = new User().   如果此时打印u1,则会打印出十六进制的哈希编码地址值.  在这行代码中,编译时系统会为程序创建一个缺省的构造器.

User(){}   如果此时在缺省构造器中编写  System.out.println(this)    系统输出的值是和上文相同的十六进制哈希编码地址值. 这就说明了this在编译器中表示当前创造的对象.在这里,this表示的是当前创造的对象u1.

2).方法中:

哪一个对象调用this所在的方法,那么this就表示哪一个对象.

当一个对象创建之后,JVM会分配一个引用自身的this.     

this关键字的使用:

1).解决成员变量和参数的二义性.必须要用.

2).同类中实例方法之间的互相调用问题,在实际编写过程中我们习惯省略this.show()的this. 其实这类问题只需要想明白是谁来调用方法的就可以找到this指代的是谁.

.

3)可以把this当做参数传给另一个方法.

4)将this当做方法的返回值(链式方法编程)

5)static和this不能一起使用.

6:构造器重载时的互相调用问题

this(name) 构造器判断调用重载构造器,参数为string.

一个构造器中只能调用一个重载构造器.且必须作为构造器的第一句话.   语法格式 this(实参)通过实参的个数,数据类型判断调用哪一个重载构造器

当多个方法重载或多个构造器重载时. 我们一般是少参数调用多参数.参数越多,考虑的因素也就越多,功能更强大.

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

创建对象并给对象设置初始值有两种方式:

1)先通过无参数构造器创建出一个对象,再通过对象调用相应的setter方法.

2)直接调用带参数的构造器,创建出来的对象就拥有了初始值.

通过构造器和通过setter方法都可以完成相同的功能.

给对象设置数据:

1).setter注入(属性注入)

2).构造注入

  根据不同的需求和合理性选择使用构造器带参数还是getter,setter.

面向对象Part2的更多相关文章

  1. 面向对象 part2 属性的特性

    6.1.1理解对象 创建自定义对象最简单的方式就是创建一个object实例.然后添加方法和实例 var person = new Object() person.name = "hi&quo ...

  2. Java学习之==>面向对象编程 Part2

    一.封装 封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结 ...

  3. 小课堂week13 Clean Code Part2

    Clean Code Part2 对象与数据结构 首先让我们进行一个严肃的思考,对象与数据结构的区别在哪里? 如下两段代码分别用数据结构和对象的方法来描述了一个Point. public class ...

  4. day 25 面向对象之接口、抽象类、多态、异常处理、反射、断言

    复习 '''继承​1.父类:在类后()中写父类们class A:passclass B:passclass C(A, B):pass​2.属性查找顺序:自己 -> ()左侧的父类 -> 依 ...

  5. python自动化开发-[第八天]-面向对象高级篇与网络编程

    今日概要: 一.面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) 2.__setattr__,__getattr__,__delattr__ 3.二 ...

  6. 面向对象开发C++快速入门视频教程 C++基础加实战视频教程

    课程目录: ├<C++面向对象高级开发(上)> │ ├1.C++编程简介.mp4 │ ├2.头文件与类的声明.mp4 │ ├3.构造函数.mp4 │ ├4.参数传递与返回值.mp4 │ ├ ...

  7. python基础——18(面向对象2+异常处理)

    一.组合 自定义类的对象作为另一个类的属性. class Teacher: def __init__(self,name,age): self.name = name self.age = age t ...

  8. C++面向对象程序设计_Part2

    目录 Composition(复合) 内存视角下的composition(复合) composition(复合)关系下的构造与析构 Delegation (委託) -- Composition by ...

  9. python语言(七)面向对象、异常处理

    一.异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常).程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关).如果捕捉成功则进入另外一个处理分 ...

随机推荐

  1. [LeetCode] Path Sum 二叉树的路径和

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  2. [LeetCode] Count and Say 计数和读法

    The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...

  3. 20145215&20145307《信息安全系统设计基础》实验五 网络通信

    小组成员:20145215卢肖明.20145307陈俊达 实验报告链接:信息安全系统设计基础--实验五实验报告

  4. C语言结构体对齐

    1.结构体变量中的元素如何访问? (1)数组中元素的访问方式:表面上有2种方式(数组下标方式和指针方式):实质上都是指针方式访问.(2)结构体变量中的元素访问方式:只有一种,用.或者->的方式来 ...

  5. re

    Python3正则表达式应用: 目的:获取匹配的字符串 输出:直接输出或是.group() / .group(0) 常用函数: re.compile 可以把正则表达式编译成一个正则表达式对象,这样可以 ...

  6. JavaEE学习文章汇总-ssm框架

    Spring-SpringMVC-Mybatis 1:Maven创建webapp项目 Maven 下的spring框架(一创建项目) 2:mybatis3 入门教程 mybatis实战教程(mybat ...

  7. TypeScript 素描-变量声明

    博文读自 TypeScript 官方文档而来,不具有学习性,仅是本人学习时记录以供日后翻阅 ,有学习TypeScript的朋友还请去看更为详细的官方文档 /* 变量声明在之前的js中一直是使用var关 ...

  8. 【总结】使用WebBrowser遇到的陷阱

    一.前言 一直想用WebBrowser做一些好玩的东西,比如抓取分析感兴趣的网站页面.自动点击提交页面等,所以最近在研究WebBrowser.WebBrowser的功能十分强大,就是一个微型的Brow ...

  9. 【原创】自己动手写工具----XSmartNote [Beta 2.0]

    一.前面的话 在上一篇自己动手写工具----XSmartNote中,我简单介绍了这个小玩意儿的大致界面和要实现的功能,看了一下园子里的评论,评价褒贬不一,有人说“现在那么多云笔记的工具”,“极简版ev ...

  10. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...