面向对象侧重于处理对象与对象之间的关系,通过对象与对象之间的互相协作来解决问题。
类与对象
类是具有相同属性和行为的一类对象的抽象,而对象是现实世界中真实存在的实体
特性
1、封装(Encapsulation):面向对象将数据和对数据的操作封装在对象中,通过访问控制来隐藏内部实现细节,只暴露必要的接口供外部使用。这样做可以提高代码的可维护性和重用性。
2、继承(Inheritance):继承是面向对象的重要特性之一,允许创建新的类从已有的类中继承属性和方法。通过继承,子类可以重用父类的代码,并在此基础上进行拓展和特化。这种继承关系形成了类的层次结构,提供了代码的组织结构和多态性的实现。
继承目的是复用。
1.可以继承非私有成员。有部分人认为,私有成员可以被继承,但不可见。
2.构造函数不能被继承。
3.静态成员不能被继承。(静态成员通过类访问,和继承没有关系)
4.单继承,如果没有显式指定父类,则父类默认为Object类。
5.一个类直接或间接继承Object类。
3、多态(Polymorphism):多态性是指对象在不同的情况下可以表现出不同的行为。通过继承和接口实现,可以在父类或接口类型的引用上引用子类或实现类的对象,从而实现方法的动态绑定。多态性提高了代码的灵活性和扩展性,使得我们可以编写更通用、可复用的代码。
4、抽象(Abstraction):抽象是指从具体的实例中抽取出共同的特征和行为,形成类和接口的过程。通过抽象,我们可以将问题领域的实体和操作转化为代码中的类和方法,简化了问题的复杂性,提高了代码的可读性和可理解性。
5、消息传递(Message Passing):面向对象的系统通过对象之间的消息传递来实现协作和交互。对象通过调用其他对象的方法,发送消息并传递参数,从而实现对象之间的交互和信息传递。
面向对象的编程方法有助于构建模块化、可扩展、可维护的软件系统,提高了代码的可重用性和可读性。它强调将现实世界的事物抽象成对象,利用对象之间的关系和交互来解决问题。
类是对现实生活中一类具有共同属性和行为的事物的抽象
类是对象的数据类型,类是具有相同属性和行为的一组对象的集合
简单理解:类就是对现实事物的一种描述
成员访问修饰符:控制外界对此对象数据的访问。
this
this也可以调用构造函数。假设有以下构造函数:
Human(String name,int age){
this.name=name;
this.name=age;
}
调用以上构造方法:
this(name,age);//必须放在第一行。
如:Human(String name,int age,String sex){
this(name,age);
this.sex=sex;
}
super
关键字。类比与this关键字。超类对象。调用父类的成员。可以调用构造函数
一个类的构造函数第一句要么是this(...),要么是super(...)调用。如果没有,则默认为 super(); =>调用父类无参构造函数。
重写:override 覆盖父类,或祖先类中相同的方法。
属性私有,提供访问的接口,目的是为防止了外者随意改变属性值,在方法内部可以设置属性修改范围限制等,灵活性、可控性更强,保证属性的安全。
final
1.修饰的类不可被继承
2.修饰的成员方法不可被重写
3.修饰成员变量表示此属性为常量,不可改变
4.修饰函数中的普通变量:常量
5.不能修饰抽象类和接口
static
修饰的成员是静态成员,属于类成员,通过类访问。(属性、方法、块)
抽象方法:
只有方法签名,没有方法实现的方法
1、有抽象方法的类必须是抽象类,
2、抽象类不能实例化,不能创建此类型的对象,
3、让子类或后代类去对抽象方法提供实现。
4、如果子类没有对抽象方法提供实现,子类也必须定义成抽象类。
5、除了不能创建实例之外,其他与普通类特性完全相同。
6、抽象类可以有构造函数,但只能被子类调用
7、抽象类可以没有抽象方法。
接口interface
1.接口不是类
2.接口中的方法全部都是公有的抽象方法。关键字可以省略。(在jdk1.8后失效)
3.接口中的字段都是公有静态常量。关键字可以省略。
4.不能创建实例
5.规范,约束某个类型(接口的实现类)所具有的行为。
6.使用接口的引用,指向具体的实现类,也是多态的体现
7.如果一个类继承了接口,必须提供接口的所有方法的实现,否则必须定义成抽象类。
8.一个类可以实现多个接口,使用逗号进行分隔。
9.接口可以继承接口(多个),用extends继承。
jdk1.8新特性
1.接口可以有静态方法:static,无需被实现类继承,直接通过接口名称调用。
2.接口可以有默认方法:default,可以被所有实现类所继承。
3.接口可以有函数式接口:一个接口中只拥有一个抽象方法的接口。
4.lambda表达式,方法引用,Stream流操作,Optional类