Java--基础 面向对象特性之继承一

继承:
Dog:name age weight strain(品种)
Cat:name age weight gender
将多个类中相同的信息(属性+方法)提取出来,多个类可以共用这部分信息。
通过继承的机制来完成。

将Dog和Cat相同的信息提取到Animal,然后
让Dog和Cat继承Animal,表示继承了Animal中的信息。
Java中如何设置两个类的继承关系?
**通过extends关键字来完成
class B{

}
class A extends B{

}**
package 公司域名倒置 开发文档 命名规范 结尾以模块功能比如 entity

A是子类(派生类),B是父类(超类)

一旦两个类通过extends完成关联之后,这两个类就具备了父子级的关系。

继承的好处:
Java中的继承是代码复用(重用)的一种非常重要的方式,优点减少代码量,方便代码的维护(父类修改后 子类继承的东西也会被修改)。(代码优化的范围:在2个类里面)
继承的概念:一个类继承(拥有)另外一个类的属性和方法,被继承的类叫父类,继承的类叫子类。
Java只支持单继承,即一个类只能拥有一个直接父类。

父类包括直接父类,间接父类。

Dog-extends-> Pet-enxtends-> Animal

Pet是Dog的直接父类,Animal是Pet的直接父类,Animal是Dog的间接父类。

语法:
父类:
public class 类名{
属性+方法
}

子类:
public class 类名 extends 父类名{
子类特有的属性+方法
}
继承里面的内含规则:
实例化一个子类对象时,一定会优先实例化其父类对象,并且实例化父类的操作是系统自动完成,不需要我们手动去编写代码。
super()的概念;在子类中显式调用父类的无参构造,
super();是默认存在,不需要显式调用,跟无参构造相同,默认存在,不需要显式定义。
如果显式调用,super()必须写在第一行,否则语法错误,不能编译。

在子类中可以使用super调用方法,也可以访问属性,只能访问父类的公有(public)的信息,私有(private)是无法访问的。如需调用可以改成protected
private私有的属性和方法 只能他自己去调用

super的语法:
访问属性:super.属性名
super.age = 1;
调用方法:super.方法名
super.test();
super.test(1,2);
调用构造方法:super()调用无参构造,
super(参数列表)调用有参构造。
super();
super(1,2);
必须写在第一行

super的使用:
子类的构造函数中可以通过super来访问父类的所有公有信息(属性,方法,构造方法)。
子类的普通方法中通过super可以访问属性和方法,但是不能调用构造方法。

Java中的每一个类都是一个子类(Object除外 因为都默认继承了Object类),但是不是每一个类都是父类。

super关键字使用时的注意事项:
1.super只能出现在子类的方法和构造方法中。
2.super调用构造方法时,必须写在第一行,也必须写在子类的构造方法中。构造函数的目的就是让外部去实例化这个对象
3.super不能访问父类的private的属性和方法。

super VS this
相同点:1.super和this都可以访问类中的属性,方法,构造方法。
2.super和this访问构造方法时,必须写在第一行。
3.super和this访问构造方法时,必须写在构造方法中,不能在普通方法中调用。

不同点:1.super是子类访问父类,维护两个类之间的关系,
this是自己访问自己,维护一个类的关系。
2.super不能访问私有属性和方法,this可以访问私有属性和方法。

子类不能继承父类的构造方法。构造方法 创建对象
子类能继承(extends)父类的哪些属性和方法?
1.使用public和protected修饰的属性和方法。
2.默认访问权限修饰符修饰的属性和方法,子类和父类必须在同一个包中。可以理解默认修饰符是包修饰符

访问权限修饰符:public protected private 默认(不用写)

子类无法继承的
1.private修饰的属性和方法
2.默认访问权限修饰符修饰的属性和方法,子类和父类不在同一个包中。
3.构造方法。

实际开发中何时使用继承?
真实世界中,如果两个对象符合 is-a 关系就可以使用继承
对象A 对象B
A is a B 这句话成立,符合客观真实的逻辑关系,表示A和B符合
is-a关系,则A对应的类和B对应的类可以建立继承关系

dog animal
dog is a animal 成立 Dog类和Animal类可以建立继承关系
Dog继承Animal
is-a 左侧的类继承右侧的类,左侧的类是子类,右侧的类是父类

animal is a dog

继承中的方法重写/覆盖Override
只有在继承关系中才有重写的概念,
概念:子类根据需求对从父类继承的方法进行重新编写

父类的方法不能显示子类特有的属性时,就需要对父类方法进行重新

如何实现重写
在子类中重新去定义父类中已存在的需要被覆盖的方法

当调用子类对象的某个继承自父类的方法时,如果子类没有对
该方法进行重写,则调用的是父类的方法,如果子类对该方法
进行重写,则调用的是子类的重写方法。

重写需要注意的事项:
1.进行重写时,可以使用super.方法名的方式保留父类方法的业务逻辑。
2.构造方法不能被重写。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值