面向过程 : 在方法上复用
面向对象: 封装方法,在对象上重复使用
面向对象的设计思想:从现实世界中客观存在的事物出发来构造软件系统,并在系统中构造尽可能运用人类的自然思维方式
定义引用类型变量首先会在栈内存分配一个空间(空值),当我们赋予这个变量值,会在堆内存,划分一个空间,并且赋予一个值。 通过变量去访问这个值,栈内存的变量值用完就会消失,堆内存的值会等一会被垃圾回收机制回收,,而返回值是临时分配一个存储空间,当方法返回之后,临时内存空间就消失
值传递:在调用方法时,将实参值的备份传递到了方法内部,方法内部对形参值的改变不会影响到实参的值
引用传递:在调用方法时,将实参对象的引用地址传递到方法内部,由于实参和形参指向的是同一个对象,方法内部对形参对象的改变会影响到实参对象
方法重载:方法名一样,没有返回值,变量类型不同,变量个数不同
方法重写:发生在父子类中,方法名相同、参数列表相同
构造方法:方法名和类名相同,有返回值
权限修饰符
1.public:公开的本类 子类 本包 他包
2.protected:受保护的本类 子类 本包
3.default:默认的本类 本包子类 本包
4.private:私有的本类
继承:
关键字:extends
java中的继承是单继承
在使用子类构造方法创建对象时,默认会先调用所有直接和间接父类的构造方法
可以在子类构造方法中,使用super关键字调用父类的无参构造或者有参构造,并且必须是子类的构造方法的第一行代码。
由于调用子类构造方法,只能声明子类中的成员属性,父类中的成员属性无法声明,所以默认强制会在调用子类构造方法之前去调用父类构造方法。
super关键字:
1.指代父类对象
2.可以调用父类的方法
3.可以调用父类的属性
4.super();调用父类无参构造
5.super(参数列表);调用父类有参构造
==和equals的区别
1,前者是运算符,后者方法
2.前者可以适用于基本数据类型和引用数据类型,后者只能用于引用数据类型
3.前者用于基本数据类型,判断的是基本数据类型的值相等。
4.前者用于引用数据类型,判断的是引用数据类型的内存地址。
5.后者用于引用数据类型,如果没有重写hashCode方法和equals方法,则判断的是地址,和前者类同。
6.后者用于引用数据类型,如果重写了hashCode方法和equals方法,则判断的是对象的内容。
hashCode和equals的关系
1.如果两个对象用equals方法判断相等,那么他们的hashCode结果一定相等。
2.如果两个对象用equals方法判断不相等,那么他们的hashCode结果可以相等也可以不相等。
3.如果两个对象的hashCode结果不相等,那么他们用equals方法判断一定不相等。
4.如果两个对象的hashCode结果相等,那么他们用equals方法判断可以相等也可以不相等。