java核心技术(第四章)对象与类】的更多相关文章

4.1面向对象程序设计概述 OOP(面向对象编程Object Oriented Programming) OOP中数据第一位,算法第二位. 类 封装:关键在于不能让其他方法直接访问类的实例域,程序仅通过对象的方法与对象交互. 实例域:对象中的数据. 对象 对象的三个主要特性: 对象的行为:可以对对象施加哪些方法. 对象的状态:对于每个特定对象都有一组特定的实例域值,这些值的集合就是对象的当前状态. 对象标识:如何辨别具有相同行为与状态的不同对象??? 类之间最常见的三种关系 依赖(uses-a)…
4.3 用户自定义类 4.3.1 类数组的声明 需要两次new Employee[]=staff=new Employedd[3]; staff[0]=new Employedd(参数列表); staff[1]=new Employedd(参数列表); staff[2]=new Employedd(参数列表); 4.3.2 封装的注意 不要直接一个retrun一个类,应该先clone public Date getHireDay() { return hireDay; //这是错误的,只是浅复制…
重载: 如果多个方法(包含构造方法)有相同的名字.不同的参数,便产生重载.编译器必须挑选出具体执行哪个方法,它通过用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配挑选出相对应的方法. 如果编译器找不到匹配的参数,就会产生编译时错误.(此过程称为重载解析)   注意:方法的返回类型并不属于重载的条件,因为不能有两个名字相同.参数相同而返回类型不同的方法.否则会编译报错.我大学就是傻逼逼的一直把返回类型当做重载条件的一部分. 重载例子如下: public class OverLoadin…
final实例域 实例域(对象的属性)可修饰为final.修饰为final后,在构建对象时必须初始化这个实例域.若没有在实例域进行初始化,那么必须在每个构造器内初始化这个实例域(否则会编译错误). 表明在后面的操作中,不能够再对它进行修改.即没有对应的域更改器(set)方法. final修饰大部分都是应用于基本类型域(基本数据类型)或者不可变类的域(例如:String类),若修饰可变的类,可能会对读者造成混乱. 静态域与静态方法 static 静态域 static修饰的属性称为静态域,它是属于类…
Object类:所有类的超类 Object类是Java中所有类的始祖,在Java中每个类都是由它扩展而来的.但是并不需要这样写: public class Emloyee extends Object 如果没有明确的指出超类,Object就被认为是这个类的超类.在Java中,只有基本数据类型不是对象,所有数组类型,不管是对象数组还是基本类型的数组都扩展(继承)了Object类. 1.equals方法 Object类中的equals方法用于检车一个对象是否等于另外一个对象.也就是说是否具有相同的引…
封装性(有时称为数据隐藏): 实现封装的关键在于绝对不能让类中的方法直接地访问其他类的实例域值.程序仅通过对象的方法与对象的数据进行交互. 给对象赋予了"黑盒"的特征,提高了重用性和可靠性.简而言之,就是只需知道方法对应的作用,而不必了解它的具体实现过程. 有些时候,需要获得或设置实例域的值,应该提供下面三项内容: 1.一个私有的数据源: 2.一个公有的域访问器方法 3.一个公有的域更改器方法 私有的数据域: 私有数据域即写在全局的私有变量或常量.私有数据域要比公有数据域要复杂,因为需…
继上一篇Java核心技术第五章——1.类.超类.子类(1) 6.重载解析 假如调用ClassName.Method(args) 1.编译器列出类ClassName所有名为Method的方法. 2.编译器将查看调用方法提供的参数类型(args). 3.根据参数类型匹配所有名为Method的方法. 4.如果编译器没有找到与参数类型匹配的方法,或者发现经过类型转换后有多个方法与之匹配,就会报告一个错误. 7.阻止继承:final类和方法. 1.final类:当你不希望别人利用某个类定义子类.那么则使用…
自制Java虚拟机(四)-对象.new.invokespecial 一.对象的表示 刚开始学Java的时候,图书馆各种教程,书名往往都是“Java面向对象高级编程”,通常作者都会与C++做个比较,列出的优点往往都有纯面向对象.自动垃圾收集(不用管理内存).跨平台(Write once, run everywhere 是宣传的重点,前提是需要在每个平台上安装jvm).没有指针(后来证明是有的).安全等.本篇文章就来实现面向对象(简单版,暂不考虑继承),涉及的指令主要有: new 创建一个对象get…
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第四章:设置和获取线程名称 下一章 "全栈2019"Java多线程第五章:线程睡眠sleep()方法详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Jav…
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异常第四章:catch代码块作用域详解 下一章 "全栈2019"Java异常第五章:一定会被执行的finally代码块 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"…