引用:除了基本数据类型之外的引用类型都是引用类型,引用类型都是用两块内存。
构造函数: 1. 构造函数和类名相同并且没有返回值的方法。前边不能加void,否则就变成了普通的类方法。
2.是用来初始化对象的函数。使用new + 构造方法 创建一个新的对象。
重载: 指的是一个类中可以有多个具有相同的名字但是参数不同的方法(形参的个数,顺序,数据类型至少有一个不一样),和函数的返回类型是否相同无关。
this关键字: this可以是看作一个变量,它的值是当前对象的引用。
用法: 1 当成员变量和局部变量重名的时候,如果想在局部变量的方法中访问同名的成员变量时, 要使用 (表示成员变量)this.name = name(局部变量)。
2.当类中有多个重载的构造方法时,在构造方法中可以使用this()来调用其他的构造方法, 但是必须注意它必须作为构造方法中的第一条语句。
static关键字: 1.被static修饰的成员变量叫做静态成员变量,它是该类的公共变量(系统只为该变量分配一个存储空间,每个对象都要在这个空间来访问该变量。也就是说任何一个对象修改了静态变量,那么其他对象访问的都是该变量修改后的值) 。 可以通过类名的方式(类名.类变量)的方式访问,当然也可以通过类对象名(类对象名.类变量)的方式访问。
2.在类的静态方法中可以直接访问静态变量和静态方法,但是不能够直接访问非静态的方法,不能够用this关键字和super关键字。
内存解析: stack(栈内存): 存局部变量 形参
heap(堆内存): 存 new出来的东西 成员变量
data seg(数据区): 存 一切static的东西 字符串常量
code seg(代码区): 存放 类的代码
继承: 是使用extends 关键字 实现类的继承机制。是指一对象直接拥有另一对象的属性和方法。
1.父类的构造函数不能被子类继承。
2.子类不能继承或者访问父类的private属性和方法。
访问机制:
重写\覆盖: 就是子类不满意父类的方法,对从父类继承来的方法进行重写。
1.子类重写的方法必须与父类被重写的方法有相同的方法名称 参数列表 和返回类型。
2.子类重写的方法不能使用比父类被重写方法更严格的访问权限。
super关键字: 子类中想使用父类中的非private类型的变量和方法就用super。
1.如果想在子类的构造方法中使用父类的构造方法,那么super 的调用语句必须放在子类构造方法的第一行。
2.子类的构造方法中必须调用其父类的构造方法。
子类在自己的构造方法中使用 super(形参argument_list)调用父类的构造方法;使用this(形参)调用的是本类的构造方法。
Object类:是所有java类的根基类。如果在类的声明中未使用extends关键字指明其根基类那默认基类就为
Object类。
equals方法:1.public boolean equals (Object obj)方法
2. Object 的euqals方法定义为 x.equals(y) 当 x和 y是同一个对象的引用时返回true 否则就返回false; (此时和“==”一样)
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。(如果指向的是堆中同一块内存就返回true)
简单来说重写后的equals就是比较堆中两个对象的内容是否相同; “==” 比较的是栈中的两个对象指向的是否是同一个对象(就是堆中同一个内存)
3。有一些类比如String, Date 等 重写了Object的equals方法,调用这些类的equals方法,
x.equals(y),当x和y所引用的对象是同一类对象(都是String或者date)并且属性的内容相同时(并不一定时相同的对象),返回值为true,否则返回值是false. (也就是说只要堆里边的内容相同就返回true)
对象的转型(casting):1.一个基类的引用类型变量可以“指向”其子类的对象。
2.一个基类的引用不可以访问其子类对象新增加的(属性和方法)
3.可以使用引用 变量 instanceof类名 来判断该引用型变量所“指向”的对象是否属于该类或者是该类的子类。
4.子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting).
多态: 构成多态的三个条件1.要有继承。 2.要有重写。 3,父类的引用指向子类的对象。就是如下
[父类] Collection [引用] c = new [子类的一个对象或者是方法] ArrayList( );
这种用法不能够访问子类特有的方法。
抽象类: 1.用abstract 关键字来修饰一个类时,这个类叫做抽象类。用abstract来修饰一个方法时,该方法 叫做抽象方法。
2.抽象类不能够被实例化。
3.抽象类可以有也可以没有抽象方法,而有abstract方法的类必须定义为抽象类。也就是说:含有抽象方法的类必须声明为抽象类,抽象类必须被继承,抽象方法必须被重写。
4.抽象方法没有方法体,而不是方法体为空。也就是说:抽象方法只需声明,而不需要实现。
final关键字: 1.final修饰的类不能被继承。
2.final修饰的方法不能被重写。
3.final修饰成员变量时可以理解为常量,必须赋以初值(可以在声明的时候赋值也可以在类的构造方法中赋值) 并且该变量不能够改变; final修饰局部变量时,局部变量只能赋一次值; final修饰方法中的参数时,该参数的值不能够被改变。
接口:接口就是抽象方法和常量值定义的集合。 从本质上讲,接口就是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有常量和方法的实现。
1.接口和抽象方法一样,不能进行实例化。(接口是用interface关键字来修饰)。
2.接口中的每个方法默认修饰都是public abstract. 这样在实现接口中方法的时候,必须声明方法为
public 的。
3.接口中所有的变量都是 public static final.
4.一个类可以同时实现多个接口,接口之间用“,”分开。 和继承抽象类一样,实现接口后,要么实现其中的所有方法,要么声明为抽象类。
5.接口可以继承其他的接口,增加新的属性和抽象方法。
toString方法:
toString方法是一个自我描述方法 方法本身返回的是该对象的实现类的 类名 + @ + hashCode 的值 可以通过重写toString方法来自定义自我描述