面向对象(小白专属)

继承

继承

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

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
    • 接口不能包含静态方法
    • 一个类可以实现多个接口,但只能继承一个抽象类
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值