JavaSe之封装 继承

面向对象的三个基本特征(oop)之一:(封装、继承、多态 )

一.封装

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

1.封装的规则

  • 将类的某些信息隐藏在类的内部,不允许外部的程序直接访问;

  • 通过该类提供的方法来实现对隐藏信息的操作和访问;

2.封装的实现

  • 修改属性私有(设为private)
  • 创建getter/setter方法(设为public用于属性的读写)
  • 在getter/setter方法中加入属性控制语句(对属性的合法性进行判断)

二.继承

继承是面向对象的三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义、追加属性和方法

1.继承的格式:

public class 子类名 extends 父类名{}

父类:也被称为基类、超类
子类:也被称为派生类
范例:public  class Student extends Parent{

}

2.什么是继承

在这里插入图片描述

3.继承优缺点

  • 好处:
    提高了代码的复用性(多个类相同的成员属性和方法可以放到一个类当中)
    提高了代码的维护性(如果方法的代码需要修改,只需修改一处即可)
  • 弊端:
    继承让类与类之间产生了关系,类的耦合性也增加了,当父类发生变化时候,子类也不得不跟着变化,削弱了子类的独立性。

4.什么是使用继承?

假设法:我有两个类A和B,如果满足A是B的一种,或者B是A的一种,就说明他们存在继承关系,这个时候就可以考虑使用继承,否则不能滥用继承。
苹果和水果/ 猫和动物 狗和狮子

5.继承中变量的访问特点

子类局部范围找
子类成员范围找
父类成员范围找
如果都没有则报错
即遵循就近原则!

6.super与this

super关键字的用法和this关键字相似
1.this:代表本类对象的引用
2.super:代表父类存储空间的标识(可以理解为父类对象的引用)
在这里插入图片描述

7.继承中构造方法的访问特点

  • 子类中所有的构造方法默认都会访问父类中的无参的构造方法
  • 因为子类会继承父类中的数据,可能还会使用父类中的数据,所以子类初始化之前,需要对父类进行初始化。
  • 每个子类构造方法的第一句默认都是:super()
  • 如果父类中没有无参构造方法,只有带参构造方法,怎么办?
    1.通过super关键字显示调用父类的有参构造方法
    2.父类中自己单独定义一个无参构造方法

8.继承中成员方法访问特点

子类成员范围找
父类成员范围找
如果还找不到就报错(不考虑父类的父类…)

9.方法的重写

  • 概述:子类中出现了和父类一模一样的方法当子类需要父类的功能,而功能主体中,子类有自己独特的内容,就可以通过重写父类中的方法,这样即延续了父类的功能,又定义了自己的特有内容

  • @Override: 是一个注解(注解后面会学习到)可以帮我们检查重写方法声明的正确性

10.权限修饰符

Java有四种访问权限,其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符:

  • private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
  • default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
  • protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
  • public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。
  • 在这里插入图片描述
    权限修饰符可以使用在方法/属性/类private(封装提供get/set)/public/protected/default

11方法重写注意事项

  • 概述:
    子类中出现了和父类一模一样的方法当子类需要父类的功能,而功能主体中,子类有自己独特的内容,就可以通过重写父类中的方法,这样即延续了父类的功能,又定义了自己的特有内容

  • @Override: 是一个注解(注解后面会学习到)可以帮我们检查重写方法声明的正确性

  • (私有的方法不能被重写)父类中私有方法,子类不能被继承

  • 子类方法访问权限不能比父类低(public>默认>私有的)

12.java中继承注意事项

  • java中类只支持单继承,不支持多继承(一个子类不能有两个父类)
  • java中类支持多层继承
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值