首页 > 其他分享 >面向对象—继承

面向对象—继承

时间:2023-09-07 18:36:07浏览次数:48  
标签:访问 继承 方法 构造 面向对象 子类 父类 super

一.继承基本属性

class  子类  extends 父类{   }

1.子类就会自动拥有父类定义的属性方法

2.父类又叫超类,基类

3.子类又叫派生类

二.细节

1.子类继承了所有的属性和方法,但是私有属性不能放在子类中直接访问,要通过公有的方法去访问。

2.子类必须调用父类的构造器,完成父类的初始化

3.当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类哪个构造器完成对父类的初始化工作,否则,编译不会通过。

4.如果希望指定去调用父类的某个构造器,则显式的调用一下

5.super在使用时,需要放在构造器第一行

6.super()和this()都只能放在构造器第一行,因此这两个方法不能共存在一个构造器中。

7.Java所有类都是object的子类

8.父类构造器的调用不限于直接父类,将一直追溯到object类(顶级父类)

9.子类最多只能继承一个父类(直接继承),即Java中是单继承机制

10.不能滥用继承,子类和父类必须满足is-a的关系

三.super关键字

1.基本介绍

super代表父类的引用,用于访问父类的属性、方法、构造器

2.基本语法

1.访问父类的属性,但不能访问父类的private属性

super.属性名;

2.访问父类的方法,不能访问父类的private方法

super.方法名(参数列表);

3.访问父类的构造器

super(参数列表);只能放在构造器的第一句,只能出现一句

3.super好处

1.父类属性由父类初始化,子类的属性由子类初始化

2.当子类中有和父类中的成员(属性或方法)重名时,为了访问父类的成员,必须通过super,如果没有重名,使用super,this,直接访问是一样的效果。

3.super访问不限于直接父类,如果爷爷类和本类中有同名的成员,也可以使用super去访问爷爷类的成员;如果多个基类(上级类)中都有同名的成员,使用super遵循就近原则

4.super与this的比较


区别点

this

super

1

访问属性

访问本类中的属性,如果本类中没有此属性,则从父类中继续查找

从父类开始查找的属性

2

调用方法

访问本类中的方法,如果本类中没有此方法,则从父类中继续查找

直接访问父类中的方法

3

调用构造器

调用本类构造器,必须放在构造器的首行

调用父类构造器,必须放在子类构造器的首行

4

特殊

表示当前对象

子类中访问父类对象

四.方法重写(override)

1.注意事项和使用细节

1.子类的方法的形参列表,方法名称,要和父类方法中的参数,方法名称完全一样

2.子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类

  比如,父类返回类型是object,子类方法返回类型是String

3.子类方法不能缩小父类方法的访问权限

2.方法重载和方法重写的比较

名称

发生范围

方法名

形参列表

返回类型

修饰符

重载(overload)

本类

必须一样

类型,个数或者顺序至少有一个不同

无要求

无要求

重写(override)

父子类

必须一样

相同

子类重写的方法,返回类型需要和父类返回类型相同或者是其子类

子类方法不能缩小父类方法的访问范围

标签:访问,继承,方法,构造,面向对象,子类,父类,super
From: https://blog.51cto.com/u_16252316/7400077

相关文章

  • 重聊python封装继承多态
    继承以下是一段伪代码fromtorchimportnn.modelclassMODEL(nn.model): #继承了nn.mdoel类,可以自定义部分函数 defforward(self,x): x=self.linear1(x)x=self.batchnormal1d1(x)x=self.relu1(x) returnxpython可以继承一个类,在不改变类本身下,......
  • 封装与继承
    1.封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,⽽是通过该类提供的⽅法来实现隐藏信息的操作和访问。2.封装的两原则把所有的属性隐藏起来为允许访问的属性创建相应的⽅法3.实现封装的步骤所有属性修改为private修改,以⽰私有化,即不能被外部访问。为私有化的......
  • 面向对象
    什么是面向对象面向对象&面向过程-面向过程思想-1步骤清晰简单,第一步做什么,第二部做什么-2面向过程适合处理一些简单的问题-面向过程思想-1物以类聚,分类的思维模式,思考问题首先会解决问题需要那些分类,然后对这些分类进行单独思考-......
  • 开课吧前端1期.阶段2:ES6详解-3 面向对象 JSON
    7、面向对象-基础//原来写法functionUser(name,pass){//这就是一个类this.name=name;this.pass=pass;}User.prototype.showName=function(){alert(this.name)};User.prototype.showPass=function(){alert(this.pass)};varu1=newUser('blue','111......
  • 类的继承
    类的继承1.Java只支持单继承。2.子类在继承父类后,创建子类的同时会调用父类的构造方法。3.子类继承父类后可以调用父类创建好的属性和方法。4.Java不允许同时继承两个父类,但可以进行多代继承如:祖父>父>儿子>孙子。如下: Object类1.Object类是所有类的父类。2.创建一个类......
  • 类与继承及修饰符public 、private 、protected 的使用方法
    1.什么是类类可以理解成为一个模板,通过这个模板可以实例化某一个具体对象比如说:我们定义一个动物类,通过这个动物模板可以实例化成为猫或者其他具体的动物2.类的基本使用我们需要创建一个动物类;这个动物有姓名、【默认值小可爱,字符串类型】年龄、【默认值20,数字类型】性......
  • C++中虚继承时的构造函数
    在虚继承中,虚基类是由最终的派生类初始化的,换句话说,最终派生类的构造函数必须要调用虚基类的构造函数。对最终的派生类来说,虚基类是间接基类,而不是直接基类。这跟普通继承不同,在普通继承中,派生类构造函数中只能调用直接基类的构造函数,不能调用间接基类的。下面我们以菱形继承为例来......
  • 继承
    原型链继承点击查看代码functionAnimal(){this.colors=['black','white']}Animal.prototype.getColor=function(){returnthis.colors}functionDog(){}Dog.prototype=newAnimal()letdog1=newDog()dog1.colors.push('brown')......
  • 21-面向对象编程-多态参数
    多态参数方法定义的形参类型为父类类型,实参类型允许为子类类型 员工类(父类):publicclassEmpolyee{privateStringname;privatedoublesalary;publicEmpolyee(Stringname,doublesalary){this.name=name;this.salary=salary;......
  • 面向对象基础知识
    面向对象思想与方法:面向对象思想是一种软件开发的思维方式,它将现实世界中的事物抽象成对象,并通过对象之间的交互来实现系统的功能。面向对象思想有以下几个核心概念:类(Class):类是对象的模板,描述了对象的属性和行为。例如,我们可以定义一个名为"Person"的类,用于表示人的属性(如姓名、年......