面对对象-继承

继承代表了一种is-a关系,如果说A是B,也就可以说A继承了B

父类更加通用
子类更加具体
优点:提高代码的复用性。

java中实现继承使用extends关键字,语法:

[修饰符] class 类名 extends 父类{

}

子类可以继承父类的非私有的属性和方法。
子类不能继承父类的构造方法。

java中继承是属于单继承一个类只能有一个父类,但是一个父类可以有多个子类
C++中可以存在多继承,java可以通过接口实现多继承

方法的重写(override):一般发生在父子之间,子类重写的方法应该满足以下条件
1.子类的方法名,返回值类型,参数列表必须与父类相同
2.子类的修饰符范围>=父类的修饰符范围
修饰符范围:public>protected>默认>private

重载:方法名相同,参数列表不同
重写(override)和重载(overload)区别:
1.重写一般发生在父子之间,重载一般在同一个类中。
2.重写要求方法名,返回值类型,参数列表必须与父类相同,并且修饰符范围大于等于父类方法的修饰符范围。
重载方法名相同,参数列表不同,与返回值类型及修饰符无关。
3.作用不同。

重载主要是为了提供一种同名方法不同参数的能力(可以让一个类用于多个同名的方法)
重写主要是为了结合多态使用,提高程序扩展性和可维护性。

注意:一旦子类重写了父类中的方法,创建子类实例后,调用子类重写后的方法。

super关键字:代表直接父类的引用,类别this关键字进行记忆。
用法:
1.可以使用super关键字访问父类的属性: super.属性名
2.使用super关键字访问父类的方法:super.方法名()
3.使用super关键字调用父类的构造方法,但是必须作为构造方法的第一行语句存在。
注意:在静态方法中不能使用super和this关键字。

父类和子类中代码的执行顺序:
静态代码块在使用类时执行。
普通代码块在创建对象时执行。
父类的静态代码块>子类静态代码块>父类的代码块>父类的构造方法>子类的代码块>子类的构造方法
在创建子类时,先调用父类的构造方法先创建父类的实例,在创建子类的实例。

==和equals的区别
==在比较内容时分为以下两种情况:
1.使用==比较基本数据类型,做的值的比较,值相同返回true,否则返回false
2.使用==比较引用类型,比较不是内容是否相同,而是两个对象的引用(地址)是否相同,
如果指向相同的地址返回true,否则返回false。
equals():比较内容是否相同。
Object中的equals方法本质比较引用(==),如果需要按照内容进行比较是否相同,就需要重新Object中equals方法。

时间: 2024-10-06 11:55:33

面对对象-继承的相关文章

面对对象-继承-Object类

java.lang.Object类:所有类的基类一个类如果没有显式使用extends继承其他类,这个类继承了Object类,在任何类的对象中使用Object中的方法 public class Student{ } public class Student extends Object{ } 常用的方法:getClass() 返回此 Object 的运行时类.主要用于反射机制.toString() 返回该对象的字符串表示.如果使用System.out.println(stu);默认调用stu.to

javascript面对对象编程 之继承

上一篇博客中为大家介绍了javascript面向对象编程原则的封装,今天为大家介绍继承,在javascript中没有类的概念,所有不能像c#,java语言那样,直接的用类去继承类.比如现在有比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = "动物"; } 还有一个"猫"对象的构造函数. function Cat(name,color){ this.name = name; this.co

39.C#--面对对象构造函数及构造函数继承使用

//一.新建Person类namespace _39.面对对象构造函数及构造函数继承使用{public class Person{//字段.属性.方法.构造函数//字段:存储数据//属性:保护字段,对字段的取值和设值进行限定//方法:描述对象的行为//构造函数:初始化对象(给对象的每个属性依次的赋值)//类中的成员,如果不加访问修饰符,默认都是privateprivate string _name; //字段public string Name //属性{get { return _name;

16、python面对对象之类和继承

前言:本文主要介绍python面对对象中的类和继承,包括类方法.静态方法.只读属性.继承等. 一.类方法 1.类方法定义 使用装饰器@classmethod装饰,且第一个参数必须是当前类对象,该参数名一般约定为“cls",通过它来传递类的属性和方法 (不能传递实例属性和实例方法),跟实例方法的self用法相似. 2.类方法的调用 实例对象和类对象都可以调用 3.应用场景 在需要站在类的角度执行某个行为时,那么就可以定义为类方法 class Student: def __init__(self,

面对对象_面向对象的概念、类与对象的关系

面向对象的基本概念: 1.什么是面向对象 1.面向对象是一种编程思想 2.面向对象是一种思考问题的思维方式 2.建立面向对象的思维方式 1.先整体,再局部 2.先抽象,在具体 3.能做什么,再怎么做 3.如何学习面向对象 1.掌握一门面向对象语言的语法 2.熟悉面向对象的设计原则 3.熟悉面向对象的设计模式 面对对象的概述:   1.面对对象的三个特征(公认的):封装,继承,多态.(也可以说是四大特征:封装,继承,多态,抽象)   2.开发中先找对象,没有就建立一个对象,实际就是找对象,建立对象

js面对对象编程

说到js,很大一部分人会说我很熟悉,在日常的web开发中经常用,那么你的js代码是符合面对对象思路的吗?那你会问我面向过程的js代码有什么不好吗?我的感受是面对对象的js编码更加简洁,减少了混乱,可维护行增强,适合编写富客户端时应用. 好了,首先看看js里如何定义对象: <html> <head> <script type="text/javascript"> var obj=new Object(); obj.name='josh'; obj.ag

Day-8: 面对对象编程

面对过程的程序设计方法意在将函数分成子函数,再依次调用这些函数来解决问题. 而面对对象的程序设计方法,来源于自然界,类是实例的抽象,实例是类的具体.自定义出来的对象是类,而所有的数据都可以看成是对象,因此解决问题的方法是靠对象自己处理消息和相互传递消息.使用时,首先考虑的是需要创建什么样的对象,对象中有怎么样的属性,要实现什么功能(成为方法). 面向对象的抽象程度比函数要高,因为一个class中既包含数据,又包含操作数据的方法.其中,数据封装.继承和多态是面向对象的三大特点. 创建类时,clas

Java入门——(2)面对对象(上)

关键词:面对对象.类..构造方法.this.static.内部类 一.面对对象的概念:把解决的问题安装一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题.其特点可概括为封装性.继承性.多态性. 1.封装性:面对对象的核心,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想. 2.继承性:主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展. 3.多态性:是在程序中允许出现重名现象,它指在一个类中定义的属性和方法被其他类

跟着百度学PHP[4]OOP面对对象编程-12-抽象类

什么是抽象方法?我们在类里面定义的没有方法体的方法就是抽象方法.所谓的没有方法体指的是,在方法声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时还要加一个关键字“abstract”来修饰. 目录==================================== 1.声明一个抽象类,抽象方法(案例一) 2.继承一个抽象类(实例二) ======================================= 案例一 <?php abstract