Java编程入门指南

发表时间: 2023-11-20 15:14



你知道什么是对象吗?

Do you know what the object is?

01

下面是真实面试案例:

知道什么是对象吗?

啊?您认真的吗?实不相瞒......我已经20多岁了,依旧是单身!你知道的,强大的人永远是孤独的!

那你知道多态吗?

我可是正经人,不是渣男!可不会干这种不负责任的事情。

知道什么是继承吗?

鄙人家徒四壁,四海为家,没有什么财产可以被继承的。

看完上述对话,你笑了吗?

不懂也没有关系,我会偷偷拿出我珍藏多年的Java秘籍,给您一一讲解:

面向对象要学什么


面向对象的重点学习什么?

  1. 学习已有的对象并且使用
  2. 学习如何自己设计对象并且使用---面向对象的语法


初步认识类和对象:


类类似于:设计图,是对象共同特征的描述。

而对象是真实存在的具体东西。在Java中,必须先设计类,才能获得对象。


那么如何定义类?


如何定义类? 类名 对象名 = new 类名();

类的五大成员:

  1. 属性
  2. 构造方法
  3. 方法
  4. 代码块
  5. 内部类
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;    }}

理解封装思想的好处?

  1. 让编程变得很简单,有什么事,找对象,调方法行。
  2. 降低我们的学习成本,可以少学、少记,或者说压根不用学,不用记对象有哪些方法,有需要的时候去找就行。


2

面向对象 · 继承


继承是通过建立类之间的继承关系,让一个类(子类)可以继承另一个类(父类)的属性和方法。子类可以继承父类的非私有成员,并可以通过扩展、修改或重写继承的成员来实现自己的行为。

注意事项:

通过继承,可以减少重复代码的编写提高代码的可维护性和可扩展性

在Java中,一个类只能继承一个直接父类,但可以通过多层继承(多级继承)建立更复杂的继承关系。

继承类加载初始化顺序:


  1. 初始化父类再初始化子类
  2. 先执行初始化对象中属性,再执行构造方法中的初始化。



(向上滑动启阅)

致同学们:

Java继承后的加载顺序:

  1. 父类对象属性初始化
  2. 父类对象构造方法
  3. 子类对象属性初始化
  4. 子类对象构造方法

举个栗子:

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();


使用多态时的细节:

多态的弊端:


  1. 不能使用子类的特有功能
  2. 当调用成员方法的时候,编译看左边,运行看右边,那么在编译的时候会先检查左边的父类中有没有这个方法,如果没有直接报错。


引用数据类型的类型转换,有几种方式?



多态的好处:

多态性可以提高代码的灵活性和扩展性,使代码更易于维护和扩展。它也是实现动态绑定和方法重写的基础。


若您有一定框架基础知识,接触MVC三层模型的时候,你可以会发现,service为什么要写成接口呢?


service会有多种不同的实现。而service就是我们平时用多态最多的地方之一。




若您喜欢这篇文章,欢迎转载分享,非常感谢您的阅读,我将保持初心,持续输出更加实用精彩的文章。



希望大家可以多多关注我哦!