面向对象继承

一、    继承的优点

优点:提高代码的可重用性

1、     如何判断A、B类之间是继承关系?

符合 is…a关系

2、java中,所有的类都直接或间接的继承了java.lang.Object类

3、     java中,私有的成员构造方法没有被子类继承

缺省权限的成员,不能被其他包中的子类继承

二、如何实现继承

1、     将多个类中的共同的成员,提取出来放到一个公共的类(父类、超类、基类),自己只保留特有的成员

2、     多个类(子类、派生类),继承(extends) 公共类

访问修饰符class 子类 extends 父类{

}

说明:class前面的访问修饰符不能为private、protected

三、继承的2大特性

1、     单一性:一个类只能直接继承一个父类

2、     传递性:一个类可以间接的继承多个类(子类可以调用父类的父类…中的成员)

四、子类如何调用父类的成员

1、public属性

super.属性名

2、构造方法

super(【值】);

子类隐式(自动)查找并调用父类的无参数的构造方法

3、     其他方法

super.方法名([值]);

第二次课

一、    方法重写

1、     概念—对从父类继承过来的方法进行重新编写

2、     常见面试题:构造方法可以重写吗?为什么?

3、     方法重载(overloading)和方法重写(overriding)的区别和联系?

方法重载,

在同一个类中(也可以在继承关系中),方法名相同,参数列表(个数、类型)不同,不能根据方法的返回类型和访问修饰符不同,而判定是方法重载

方法重写(方法覆盖),

是对从父类继承过来的方法进行重新编写,

重写方法时,方法名、参数列表、返回类型必须和要重写的父类方法保持一致,访问修饰符可以不同,但访问权限必须要比父类要大

4、     访问修饰符4个(按权限从小到大排列)

private(私有的)< friendly(缺省的)< protected(受保护的)< public(公共的)

二、    在继承关系中,构造方法执行顺序

1、     在继承中,创建子类对象时,会自动调用父类的无参数的构造方法

2、     子类和父类同时存在有构造方法时,它们的执行顺序?

实例化子类对象时,先执行父类中无参数的构造方法,然后再执行子类中的构造方法

3、在子类构造方法中,使用super关键字调用父类的有参数的构造方法,子类将不会再自动调用父类的无参数的构造方法

第三次课

一、   抽象类和抽象方法

1、     抽象方法——方法用abstract修饰

a)   抽象方法,必须位于抽象类中

b)   抽象方法,没有方法体{}

c)   抽象方法,必须被子类重写

2、     抽象类——类名用abstract修饰

a)   作用:

一般用来做父类通过抽象方法来约束子类的行为

b)   使用时注意事项:

l  有抽象方法的类,肯定是抽象类

l  抽象类不能被实例化(创建对象)

l  抽象类中可以包含抽象方法和非抽象方法

l  抽象类中的非抽象方法,子类可以有选择性的重写,抽象方法,必须被子类重写

二、   final修饰符

1、     final修饰的变量——常量

2、     final修饰的类——密封类或封闭类

封闭类不能被其他类继承

3、final修饰的——封闭方法,不能被子类重写

时间: 2024-11-08 23:09:48

面向对象继承的相关文章

(一)关于面向对象----继承

(一)关于面向对象----继承 接触面向对象许久了,对于继承这一块也确实琢磨了一段时间,搜集各种资料和网站,也未能得到使自己满意的,并能快速理解的继承知识,于是对他们归类,并得出自己的总结. 先说说继承是什么吧?也许我们最早接触有关继承的应该是"遗产"??也许电视剧看多了,总有家族为了这玩意儿整的你死我活,确实听看不下去的哈,但是对于咱大JS而言,可就变得十分和蔼,可亲.毕竟没有人来争夺,也不会有任何事故,最多来些许bug等等.废话不多说,进入正题!! 1.扩展原型对象继承:往原型对象

Php面向对象 – 继承和重写

继承: php中,通过在类上,使用特殊的操作达到目的. 通过在定义类时,利用extends来指明当前类对象继承那个类的对象. 例子: class C { public  $p_c =  "value c"; } class D extends C { public  $p_d = "value d"; } $o =  new D; var_dump($o->p_c) var_dump($o->p_d) 输出:string(7) "value c

Java面向对象㈡ -- 继承与多态

Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆盖的概念.覆盖被用来支持多态.实际开发中Java通常继承于抽象类,实现于接口.如果不希望一个类被继承,或者一个方法被覆盖,或者一个成员变量被改变,就可以用final修饰.这里只说明两个问题:1,重载和覆盖的区别重载和覆盖的区别:重载发生在同一个类之中,重载要求函数名相同,参数不同(参数个数||参数类

关于 JS 面向对象继承属性和方法的小例子

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1>关于 JS 面向对象继承属性和方法的小例子</h1> </body> </html> <script> //人的构造函

黑马程序员-OC面向对象继承关系和组合关系笔记

继承关系是描述类和类之间的关系,两个类分别称为子类和父类,子类继承了父类,子类就拥有了父类的属性和方法: 继承的关系特点描述出来就是:** "是" **  (例如:学生类 是 人类) 组合关系描述的语句是:**** "拥有" ***  (例如:学生有成绩这个属性,而成绩属性本来就是一个成绩类的对象 ) 继承示例代码: #import <Foundation/Foundation.h> //Animal类的声明 @interface Animal : NS

12.面向对象(继承/super/接口/抽象类)

面向对象继承与派生继承继承顺序继承原理子类调用父类的方法(super)组合接口接口的概念:接口的概念解释和使用:python中的接口:抽象类 面向对象 继承与派生 继承 什么是继承?继承是一种创建新的类的方式 class A: pass class B(A): pass 在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或者超类,新建的类称为派生类或者子类 python中类的继承分为,单继承和多继承. 查看继承的方法B.__bases__ 如果没有指定基类,python的类会默

C#编程语言与面向对象——继承

现实生活中的事物都归属于一定的类别,比如,狮子是一种(IS_A)动物,为了在计算机中模拟这种关系,面向对象的语言引入了继承(inherit)特性. 构成继承关系的两个类中,Animal称为父类(parent class)或基类(base class),Lion称为子类(child class). 父类与子类之间拥有以下两个基本特性: 1.是一种(IS_A)关系:子类是父类的一种特例. 2.扩充(Extends)关系:子类拥有父类所没有的功能. class Animal { } class Lio

.Net学习 第2季02 C#面向对象继承1

.Net 视频学习第2季 C#面向对象 面向对象继承1 查找类的命名空间快捷键:alt+shift+F10 项目A中有类X,要在项目B中使用X的话,首先在项目B的引用当中添加项目A,然后在项目B的代码中添加using A;(假设项目A类X的命名空间就是A)或者在使用X时采用A.X的格式. 记录运行时间 Stopwatch sw = new Stopwatch(); sw.Start(); // 代码 sw.Stop(); Console.WriteLine(sw.Elapsed); Start(

js面向对象继承

前言 最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录. js的面向对象 先说说我目前了解的js创建对象方法 1.写一个函数,然后通过new创建对象 2.字面量的方式 如果想要复用的话,可能会用到工厂方法 工厂方法每次都要创建对象 并返回 构造方法创建对象方法可以更简洁 然而构造方法用实现实例间共享共同的方法,比较麻烦 原型可以实现实例共享所有属性 每个函数都有指向原型对象的指针,如果将一个函数的原型属性赋值给另外函数的实例,函数的原型将指向另外一

CBV-2-CBV流程-view源码解析-面向对象-继承

CBV-2-CBV流程-view源码解析-面向对象-继承 CBV,基于反射实现根据请求方式不同,执行不同的方法. 请求流程:view源码解析 1.urls.py :请求一定来执行视图下的as_view方法. 2.views.py 视图内没有as_view方法,则找父级的as_view方法. 3.源码:as_view返回自己下面的view方法 4.as_view执行了自己view方法,放回值是dispatch方法. 5.dispatch方法判断请求方式. 6.所以请求已经来,第一步先执行的都是di