面向对象

 面向过程   : 在方法上复用

面向对象:   封装方法,在对象上重复使用

面向对象的设计思想:从现实世界中客观存在的事物出发来构造软件系统,并在系统中构造尽可能运用人类的自然思维方式

定义引用类型变量首先会在栈内存分配一个空间(空值),当我们赋予这个变量值,会在堆内存,划分一个空间,并且赋予一个值。 通过变量去访问这个值,栈内存的变量值用完就会消失,堆内存的值会等一会被垃圾回收机制回收,,而返回值是临时分配一个存储空间,当方法返回之后,临时内存空间就消失

值传递:在调用方法时,将实参值的备份传递到了方法内部,方法内部对形参值的改变不会影响到实参的值

引用传递:在调用方法时,将实参对象的引用地址传递到方法内部,由于实参和形参指向的是同一个对象,方法内部对形参对象的改变会影响到实参对象

方法重载:方法名一样,没有返回值,变量类型不同,变量个数不同

方法重写:发生在父子类中,方法名相同、参数列表相同

构造方法:方法名和类名相同,有返回值

权限修饰符

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方法判断可以相等也可以不相等。

原文地址:https://www.cnblogs.com/mihich/p/13023289.html