JavaSE-面向对象(个人笔记,勿喷)

面向对象侧重于处理对象与对象之间的关系,通过对象与对象之间的互相协作来解决问题。

类与对象


类是具有相同属性和行为的一类对象的抽象,而对象是现实世界中真实存在的实体

特性

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类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值