你知道什么是对象吗?
Do you know what the object is?
01
下面是真实面试案例:
问
知道什么是对象吗?
答
啊?您认真的吗?实不相瞒......我已经20多岁了,依旧是单身!你知道的,强大的人永远是孤独的!
问
那你知道多态吗?
答
我可是正经人,不是渣男!可不会干这种不负责任的事情。
问
知道什么是继承吗?
答
鄙人家徒四壁,四海为家,没有什么财产可以被继承的。
看完上述对话,你笑了吗?
不懂也没有关系,我会偷偷拿出我珍藏多年的Java秘籍,给您一一讲解:
面向对象要学什么
面向对象的重点学习什么?
初步认识类和对象:
类类似于:设计图,是对象共同特征的描述。
而对象是真实存在的具体东西。在Java中,必须先设计类,才能获得对象。
那么如何定义类?
如何定义类? 类名 对象名 = new 类名();
类的五大成员:
public class 类名{ //1、成员变量(代表属性,一般是名词) String name; double height; //2、构造器 构造方法 public 类名(){ }//无参构造 //3、成员方法(代表行为,一般是动词) public void study(){ } //4、代码块 //5、内部类}
干货满满
Java的面向对象三大特性:我们一一讲解。
1
面向对象 · 封装
封装告诉我们:如何正确设计对象的属性和方法
封装的原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为。
public、private、protected修饰符:
说到封装,Java提供了四种访问权限修饰符,public、private、protected以及空着不写,不加访问修饰符,表示包级可见。先看上述修饰符的作用。
权限修饰符的分类:
由小到大(private<空着不写(缺省/默认)< protected < public)。
修饰符 | 当前类 | 子类 | 不同包 | 同包 | _ |
public | √ | √ | √ | √ | _ |
空着不写 | √ | × | × | √ | _ |
private | √ | × | × | × | _ |
protected | √ | √ | × | √ | _ |
_ | _ | _ | _ | _ | _ |
封装是将数据和对数据的操作封装在一个类中,通过定义类的成员变量和方法来实现。封装可以隐藏类的内部实现细节,使类的使用者只能通过公共接口访问和操作数据,而无需关心其具体实现。
如果子类的方法重写了父类的方法,那么子类中该方法的访问级别不允许低于父类的访问级别。为了确保可以使用父类实例的地方都可以使用子类实例去代替,确保满足里氏替换原则。
private关键字:
可以修饰成员(成员变量和成员方法)
被private修饰的成员只能在本类中才能访问
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作。
提供"setXxx(参数)"方法,用于给成员变量赋值,方法用public修饰。
提供"getXxx()"方法,用于获取成员变量的值,方法用public修饰。
public class Example { private String name; public String getName() { return name + ""; } public void setName (String name ) { this.name = name; }}
理解封装思想的好处?
2
面向对象 · 继承
继承是通过建立类之间的继承关系,让一个类(子类)可以继承另一个类(父类)的属性和方法。子类可以继承父类的非私有成员,并可以通过扩展、修改或重写继承的成员来实现自己的行为。
注意事项:
通过继承,可以减少重复代码的编写,提高代码的可维护性和可扩展性。
在Java中,一个类只能继承一个直接父类,但可以通过多层继承(多级继承)建立更复杂的继承关系。
继承类加载初始化顺序:
(向上滑动启阅)
致同学们:
Java继承后的加载顺序:
举个栗子:
Animal:动物类
public class Animal { /**名称*/ public String name; /**颜色*/ public String color; /**显示信息*/ public void show(){ System.out.println("名称:"+name+",颜色:"+color); }}
Cat:猫类
/**猫继承自动物,子类 is a 父类*/public class Cat extends Animal { /**价格*/ public double price;}
Cat并没有定义color属性,但在使用中可以调用,是因为Cat继承了父类Animal,父类的非私有成员将被子类继承。如果再定义其它的动物类则无须再反复定义name,color与show方法。
3
面向对象 · 多态
多态概念:
多态是指同一种操作可以在不同的对象上产生不同的行为。在Java中,多态性体现为通过父类类型的引用指向子类对象,并根据实际的对象类型来调用相应的方法。
多态的前提:有继承关系关系;有父类引用指向子类对象 。
Animal cat = new Cat();
使用多态时的细节:
多态的弊端:
引用数据类型的类型转换,有几种方式?
多态的好处:
多态性可以提高代码的灵活性和扩展性,使代码更易于维护和扩展。它也是实现动态绑定和方法重写的基础。
若您有一定框架基础知识,接触MVC三层模型的时候,你可以会发现,service为什么要写成接口呢?
service会有多种不同的实现。而service就是我们平时用多态最多的地方之一。
若您喜欢这篇文章,欢迎转载分享,非常感谢您的阅读,我将保持初心,持续输出更加实用精彩的文章。
希望大家可以多多关注我哦!