Java面向对象—继承、包和抽象

继承

继承:Java的面向对象之一
含义:子类继承父类,可以直接使用父类的属性和方法(主要使用方法)。
父类:有时也会被别人叫做超类,基类。
关键字:extends;
**继承:**类和类之间的关系。

那一般什么时候用继承?
一般一个小的类和大的类之间这样使用,比如:Animal;Dog;Cot
好处是:减少代码的冗余。

特点:
1.子类可以继承父类非private的属性和方法;
2.子类可以拥有自己的属性和方法,即子类可以对父类进行扩展;
3.子类可以用自己的方式实现父类的方法;
4.Java类的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多继承就是,例如:a类继承b类,b类继承c类,所以按照关系就是c类是b类的父系,b类是a类的父系,这是Java继承区别于C++的继承的一个特性;
5.提高了类之间的耦合性(继承的缺点,耦合性、度高就会造成代码之间的联系紧密,代码独立性差);
6.子类可以重写父类的写法。
继承的优点:1.提高代码的复用性;
2:子类中重复的代码只需要在父系中写一遍,所有的子类都可以应用;
3:提高代码的维护性;
4:只需要修改父类属性和方法,所有的子类都会应用;
5:提高类和类之间的关联性,为多态做基础(其实这也是继承的缺点,增加了类和类之间的耦合度,耦合度的增加意味着后期扩展性的降低)。
构造方法补充:
1.当一个类中没有定义构造方法的时候,系统会默认给该类添加一个无参构造方法;
2.当一个类中定义了有参构造方法的时候,系统不会默认给无参构造方法。

this和super的区别

1.this代表本类对象的引用(this理解为一个代词,就是创建的那个对象,new的那个对象);
2.super代表父类对象;
3.属性和方法都是对象调用的,那么this和super都可以调用属性和方法,例如:我吃桃子(谁吃桃子,这个我就是谁);
4.this和super不能放一块;
子类的构造方法:(有参和无参)里面,第一句默认添加了super()如果手动添加的话,必须放在第一句。
同一个类里面,静态>代码快>构造方法
类创建要比对象早,静态(static)是属于类的,不属于对象,在静态里面,不要调用非静态的,也不要用this和super。
子父类里面,父类静态>子类静态>父类代码块>父类构造方法>子类代码块>子类构造方法

**包的概念:**为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。
包的作用:

  1. 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

  2. 如同一个文件夹一样,包采用了树形目录的存储方式,同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别,因此,包可以避免名字冲突。

  3. 包也限定了访问权限,拥有包访问权限的类,才能访问某个包类。
    关键字:import
    语法: import
    使用import关键字引入,使用通配符 “ * ”。
    使用import关键字引入,指定包中的指定类。
    类文件中可以包含任意数量的import声明,import声明必须在包声明之后,类声明之前。
    import导入包: 告诉下面的代码,我要用哪个包里的哪个类。
    完整的类包:全限定类包。
    包的使用: 1.为了方便管理类;
    2. 域名倒写;
    3. 全部小写;
    4. 一般都是三级结构

    抽象类

    抽象类:被abstract修饰的类就叫抽象类。
    把一些类的共同特征抽取出来,放到一个类中,这个类就叫抽象类。
    **抽象方法:**被abstract修饰的方法就叫抽象方法。
    特点: 1.抽象类可以有构造方法,但是不能创建对象;
    2. 抽象类中可以有普通的成员变量,也可以有静态成员变量;
    3. 抽象类里面有抽象方法,普通类里面不能有抽象方法;
    4. 普通类继承了抽象类,必须重写抽象类中的抽象方法;
    5. 抽象类也可以有普通方法;
    6. 抽象类天生就是当爹的。

    抽象方法没有方法体。

    重写

    重写:1.存在继承或者实现关系;
    2. 子类和父类的方法相同;
    3. 子类的访问权限必须大于等于父类的访问权限 (一般情况都是);
    4. 子父关系中,子类和父类的方法名,参数表,返回值必须一致;
    5. 子类抛出的异常必须小于等于父类抛出的异常。

    为什么要有方法重写?
    当父类不知道子类的方法到底怎么执行的时候,就需要把这个方法定义成抽象方法,让子类去重写这个方法。
    子类继承了父类以后,子类就拥有了父类的方法。但是这个方法不适合子类,就需要子类重写这个方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值