java面向对象有哪些特性?
java面向对象主要具有三大特性就是封装、继承、多态。
封装一般是指封装一个类或者一个方法,譬如封装类就隐藏了类的内部实现机制,保护数据隐私,限制了对于数据的不合理操作。需要注意的是,子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。
继承一般是指从已有的父类上派生出新的子类。子类在父类的数据和行为上可以进行特性的拓展,是常说的is a关系,譬如父类是动物,子类是猫,a cat is a animal这种关系就适用于继承。
多态一般是指类与类之间的关系,在有继承,有重写,且父类引用指向子类对象的情况下,我们就称之为多态。
接口方法类型
在 Java 8 及以上版本中,接口引入了新的方法类型:default 方法、static 方法和 private 方法。
深拷贝 vs 浅拷贝 vs 引用拷贝
浅拷贝:会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。
深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。
引用拷贝:就是两个不同的引用指向同一个对象。
举例如下,有两个类,分别是地址类和人类。其中地质类有一个私有的普通属性name,人类有一个私有的引用属性地址类。
public class Address{private String name;
}public class Person {private Address address;
}