面向对象(小白专属)

Posted 可乐好哇!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象(小白专属)相关的知识,希望对你有一定的参考价值。

面向对象编程

继承

继承

“子类可以继承父类的字段和方法”

class A 
  public String name;
  public String b;
  public A(String name) 
	this.a = a;
  

  public void eat() 
  	System.out.print("吃饭!");
  


class B extends A  
  public B(String name) 
	super(name);
  


java 中对于字段和和方法共有四种访问权限:

  • private:类内部能访问,类外部不能访问
  • 默认(包访问权限):类内部能访问,同一个包中的类可以访问,其他类不能访问
  • protected:类内部能访问,子类和同一个包中的类可以访问,其他类不能访问(不安全)
  • public:类内部和类的调用都能访问

如图所示:

No范围privatedefaultprotectedpublic
1同一包中的同一类
2同一包中的不同类
3不同包中的子类
4不同包中的非子类

多态

多态

需要结合向上转型、动态绑定、方法重写,当类的调用者编写方法时,参数类型为父类,方法内部并不知道,也不关注当前父类引用指向哪个类型的子类的实例,此时父类这个引用调用方法可能会有多种不同的表现。

1.使用多态的好处?

  • 类调用者对类的使用成本进一步降低
  • 能够降低代码的“圈复杂度”,避免使用大量的 if - else
  • 可扩展能力更强

抽象

抽象(abstract)

父类中的方法没有什么实际工作,像这种没有实际工作的方法,可以把它设计一个抽象方法,包含抽象方法的类称为抽象类

注意:

  • 抽象类不能直接实例化
  • 抽象方法不能是private
  • 抽象类中可以包含其他的非抽象方法,也可以包含字段,非抽象方法和不同方法的规则都是一样的,可以被重写,也可以被子类直接调用

抽象类的作用

   抽象类最大意义就是为了被继承
   抽象类不能被实例化,要想使用,只能创建抽象类的子类,让子类重写抽象类的抽象方法

接口

接口(interface)

   抽象类的进一步,抽象类中还可以包含非抽象方法和字段,而接口中包含的方法都是抽象方法,字段只能包含静态常量

interface的使用

  • 使用interface定义一个接口
  • 接口中的方法一定是抽象方法,可以省略abstract
  • 接口中的方法一定是public,可以省略public
  • 子类使用implement 继承接口,此时不是“扩展”而是”实现“
  • 接口不能单独被实例化

子类可以实现多个接口

接口之间可以用extends关键字继承接口,实现复用的效果

区别

1.重载和重写的区别?

  • 重载(overload)
    • 方法名相同
    • 参数列表不同(个数和类型)
    • 返回值不作要求
  • 重写(override)
    • 方法名称相同
    • 参数列表相同(个数和类型)
    • 返回值也要相同
    • final修饰的方法不能被重写

2.this 和 super 的区别?

  • this

    • 访问本类中的属性和方法
    • 先查找本类,本类没有就调用父类
    • 表示当前对象
  • super

    • 由子类访问父类中的属性和方法
    • 不查找本类,而直接调用

3.抽象类和接口的区别?

  • 抽象类(abstract)

    • 有构造方法
    • 有普通成员变量
    • 包含非抽象的方法
    • 抽象类中的抽象方法访问类型可以是public、protected、默认类型
    • 抽象类中可以包含静态方法
  • 接口(interface)

    • 没有构造方法
    • 没有普通成员变量
    • 方法必须是抽象的
    • 方法访问类型只能是public abstract
    • 接口不能包含静态方法
    • 一个类可以实现多个接口,但只能继承一个抽象类

以上是关于面向对象(小白专属)的主要内容,如果未能解决你的问题,请参考以下文章

小白学习之路,初识面向对象

Python小白到老司机,快跟我上车!基础篇(十七)

点击领取专属小蛇~JS贪吃蛇来咯

面向对象

程序员小白如何理解面向对象?

新手小白学JAVA 面向对象2 构造函数 构造代码块 this