面向对象编程笔记

Accessor(访问器)和Mutator(更改器)方法
如果一个方法改变了调用它的对象,我们便称之为更改器方法,反之,则是访问器方法。
其中ArrayList a = new ArrayList<>();  a.add(""); add方法为更改器方法,改变了对象a的值


this 引用
在对象上调用方法是,this引用指向该对象,当实例变量和局部变量同名时,非限定名表示局部变量,而this.value 表示实例变量


实现构造函数 
public Employee(String name,double salary){
this.name = name;
this.salary = salary;
}
Employee fred = new Employee("fred",1000);


重载(有多个名称相同但是参数不同的方法版本,name这个方法就是重载的)
public Employee(double salary){
this.salary = salary;
}
Employee Peter = new Employee(10000);


调用另一个构造函数
public Employee(double salary){
this("",salary);
}
需要注意的是这里的this不是正被构造对象的引用。相反,它是一种特殊语法,只用在同类的另一个构造函数调用中。


final 
当使用可修改对象的引用时,final修饰符只是声明该引用永不改变。修改对象本身是完全合法的
public class Person{
private final ArrayList friends = new ArrayList<>();
// 可以给该列表添加元素
}
方法可以修改friends引用的数组列表,但是他们不能用其他的对象替代。特别是friends不能变为null。


无参构造函数
public Employee(){
this.name = "";
this.salary = 0;
}
当一个类已经存在一个构造函数时,系统便不会在自动给他分配一个无参的构造函数,此时如果还需要无参的构造函数,则需要自己写一个


包的声明
要将一个类放到一个包中,需要将包的声明作为源文件的第一个声明


类路径
可以将class文件放到一个或者多个被称为jar文件的归档文件中
jar cvf library.jar com\mycompany\*.class
在项目中需要使用类库中的jar文件时,需要指定class path告诉编译器和虚拟机这些jar文件在哪里。class path可以包含
1. 包含class文件的目录
2. JAR文件
3. 包含JAR文件的目录

import 声明与C或C++的 #include 指令完全不同,#include指令为编译器包含了头文件。import不会导致文件重新编译。它们只是缩短了名称


嵌套类 
为了限制可见性或者避免因为导入一些使用了通用名称的包而产生混乱。
静态嵌套类
例如
public class Invoice(

private static class Item{//private 方法保证了只有Invoice方法能够访问它
String description;
int quantity;
double unitPrice;

double price(){
return quantity*unitPrice;
}
}

private ArrayList items = new ArrayList<>();

)
当然也可以 public static class Item{ // 这样和在其他任何类外部声明没有本质上的区别
}
内部类
区别于静态嵌套类,内部类方法可以持有,访问它的外部类的实例变量。
例如
public class NetWork{
public class Member{
private String name;

public void leave(){
members.remove(this); // 此处的members是外部类的实例变量
}
}

private ArrayList members;
}

你可能感兴趣的:(读书笔记)