this的使用

this调用本类属性及方法 public Employee (String aName, double aSalary) { name = aName; salary = aSalary; } 参数变量会遮蔽同名的字段实例。例如:如果将参数命名为salary,salary将指示这个参数,而不是字段实例。但是,还是可以通过this.salary访问实例字段。 public Employee (Str…

package、import

Java定义了一种名字空间,称之为包:package。一个类总是属于某个包,类名(比如Person)只是一个简写,真正的完整类名是包名.类名。 例如: 小明的Person类存放在包ming下面,因此,完整类名是ming.Person; 小红的Person类存放在包hong下面,因此,完整类名是hong.Person; 小军的Arrays类存放在包mr.jun下面,因此,完整类名是mr.jun.Ar…

面向对象的特征——继承

继承的出现减少了代码冗余,提高了代码的复用性;此外,也更有利于功能的扩展,让类与类之间产生了关系,提供了多态的前提。 父类 Employee 员工类Employee作为超类(父类、基类),经理类Manager作为子类(派生类)。 员工类代码如下: package com.studyjava.demo; public class Employee { private String name; pri…

final关键字的作用

final关键字可以用于三个地方: 类属性,表明该属性是常量,不可变 类,使用final修饰的类不能被继承 方法,使用final修饰的方法不可以被覆盖。 final实例字段 可以将实例字段定义为final。这样的字段必须在构造对象时初始化。也就是说,必须确保在每一个构造器执行之后,这个字段的值就已经设置,并且以后不能再修改这个字段。例如: class Emploee { private final…

方法的重写(覆盖)

重写:子类继承父类后,可以对父类中同名同参数的方法进行覆盖操作。重写以后,当创建子类对象以后,通过子类对象调用父类中的同名同参数方法时,实际执行的是子类重写父类的方法。 一般的,我们称子类叫重写的方法,父类的叫被重写的方法。 注意:构造函数不是成员,因此它们不会被子类继承,但是可以从子类调用超类的构造函数。 package com.studyjava.unit1; class Person { p…

子类构造器

super 可以使用super来调用父类的属性或方法,调用方式为 super.属性名 super.方法名(参数列表)。 除此之外,还可以通过super来调用父类的构造器。 super(参数列表) 子类构造器 在java中子类构造器和php中相比,有了一些限制: 子类构造器中使用超类构造器,调用父类构造器的语句必须是第一条语句。 如果子类构造器没有显示的调用超类的构造器,将自动的调用超类的无参数构造…

面向对象的特征——多态

什么时候该用继承?有一个简单规则可以用来判断是否应该将数据设计为继承关系,这就是“is_a”规则。它指出子类的对象也是超类的对象。“is_a”规则的另一种表述是替换原则。它指出程序中出现超类对象的任何地方都可以使用子类对象替换。 一个对象变量可以声明为多种对象类型的现象称为多态。在运行时能够自动地选择适当的方法,称为动态绑定。 下面通过代码来展示多态与动态绑定: public class Empl…

对象类型转换

对Java对象的强制类型转换称为造型 从子类到父类的类型转换可以自动进行 从父类到子类的类型转换必须通过造型( 强制类型转换) 实现 无继承关系的引用类型间的转换是非法的(在造型前可以使用instanceof) Object obj = new Person(); // 强转 if (obj instanceof Person) { Person p = (Person) obj; }

Object——所有类的超类

在Java中,有一个类的始祖,它就是Object类,在java中每个类都扩展了Object。所有类包括自定义的类吗?比如自己写的一个员工类: class Employee { … } 这里并没有写成 class Employee extends Object { … } Java规定,如果一个类没有明确指出超类(即没有使用extends),那么它的超类就是Object。 Object与其他…

包装类

有时,需要将int这样的基本类型转换为对象。所有的基本类型都有一个与之对应的类。例如,Integer类对应基本类型的int。通常,这些类称为包装器。这些包装器类有显而易见的名字:Integer、Long、Float、Double、Short、Byte、Character和Boolean(前6个类派生于公共的类Number)。包装器是不可变的,即一旦构造了包装器,就不允许更改包装在其中的值。同时,包…