前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java继承(上)

Java继承(上)

作者头像
Breeze.
发布2022-04-09 14:52:45
7920
发布2022-04-09 14:52:45
举报

文章目录[隐藏]

继承

特点:

  1. 利于代码复用
  2. 缩短开发周期
  • 类于类之间的关系。如:父子关系
  • 使用已存在的类的定义作为基础建立新类
  • 新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类
图片[1]-Java继承(上)-清风博客
图片[1]-Java继承(上)-清风博客
图片[2]-Java继承(上)-清风博客
图片[2]-Java继承(上)-清风博客

兔子和羊属于食草动物类,狮子和豹属于食肉动物类。

食草动物和食肉动物又是属于动物类。

所以继承需要符合的关系是:is-a,父类更通用,子类更具体。

虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。

继承的实现

  • 编写父类
代码语言:javascript
复制
class Animal{
   //公共的属性和方法
}
  • 编写子类,继承父类
  • Java当中的继承,只能是单继承。一个子类只有唯一的父类
代码语言:javascript
复制
class Dog extends Animal{
   //子类特有的属性和方法
}
class Cat extends Animal{
   
}

当子类继承父类的时候子类可以访问父类非私有成员

父类不可以访问子类特有成员,哪怕是共有的

方法重写与重写

图片[3]-Java继承(上)-清风博客
图片[3]-Java继承(上)-清风博客
代码语言:javascript
复制
/**
* 方法重载:
* 1、同一个类中
* 2、方法名相同,参数列表不同(参数顺序、个数、类型)
* 3、方法返回值、访问修饰符任意
*/

语法规则:

  • 在子类当中定义,重写父类当中的方法
  • 方法名以及参数列表,都要与父类继承的方法相同
  • 参数列表:参数类型、顺序、个数,与父类完全一致,并不包括参数名

方法返回值返回值和访问修饰符是可以在允许的一定范围内进行变化! 当访问值是void或基本数据类型时,不允许修改,必须完全相同;当返回值是引用类型时,可以是父类或者是子类

代码语言:javascript
复制
/**
* 方法重写:
* 1、有继承关系的子类中编写的
* 2、方法名相同,参数列表相同(参数顺序、个数、类型)
* 3、访问修饰符,访问范围需要大于等于父类的访问范围
* 4、与方法的参数名无关
*/

当子类重写父类的方法后,子类对象调用的是重写后的方法

访问控制

修饰符

当前类

同一包内

子孙类(同一包)

子孙类(不同包)

其他包

public

Y

Y

Y

Y

Y

protected

Y

Y

Y

Y/N

N

default

Y

Y

Y

N

N

private

Y

N

N

N

N

private:只允许在本类中访问

public:允许在任意位置访问

protected:允许在当前类、同包子类/非子类、挎包类调用、夸包非子类不允许访问

default:允许在当前类、挎包子类/非子类不允许,同包子类/非子类允许

Java 修饰符 | 菜鸟教程

super关键字(上)

super:父类对象的引用

代码语言:javascript
复制
//父类的构造方法是不允许被继承,不允许重写
public Animal(){
    
}
图片[4]-Java继承(上)-清风博客
图片[4]-Java继承(上)-清风博客

访问修饰符不影响成员加载顺序,跟书写位置有关。

super关键字(下)

父类的构造方法是不允许被继承,不允许重写,但是会影响子类对象的实例化

子类构造默认调用父类的无参构造方法,可以通过super()调用父类允许访问的其他构造方法

  • super:父类对象的引用
    • 访问父类成员方法super.print();
    • 访问父类属性super.name;
    • 访问父类构造方法super();
  1. 子类构造的过程中必须调用其父类的构造方法
  2. 如果子类的构造方法中没有显示标注,则系统默认调用无参的构造方法
  3. 如果子类构造方法中既没有显示标注,且父类中没有无参的构造方法,则编译出错
  4. 使用super调用父类指定的构造方法,必须在子类构造方法的第一行

super和this

this和super不能在静态代码块中使用

this:代表当前对象

super:代表父类对象

代码语言:javascript
复制
    public static void Say(){
//        this.month=2;
//        super.name="aa";
    }

this和super 不能同时出现。

图片[5]-Java继承(上)-清风博客
图片[5]-Java继承(上)-清风博客
图片[6]-Java继承(上)-清风博客
图片[6]-Java继承(上)-清风博客

https://www.runoob.com/java/java-inheritance.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 继承
  • 继承的实现
    • 方法重写与重写
    • 访问控制
      • super关键字(上)
        • super关键字(下)
          • super和this
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档