继承和抽象类

继承和抽象类

1.面向对象的三大特征:封装性,继承性,多态性。继承是多态的前提,如果没有继承,就没有多态。

2继承解决的问题是共性抽取。在继承关系中,“子类就是一个父类”,也就是说子类可以看成父类

定义父类的格式(一个普通的类)

public class 父类的名称{

}

定义子类的格式

public class 子类名称 extends 父类名称{

}

​ (1)在父子类的继承关系中,如果成员变量重名,则创建子类对象时,访问有两种方法。直接通过子类对像访问成员变量: 等号左边是谁,就优先用谁,没有则向上找 。左边看创建的对象。间接通过成员方法访问成员变量:该方法属于谁,就优先用谁,没有则向上找。

​ (2)局部变量直接用, 本类的成员变量 this.num 父类的成员变量 super.num

​ (3) 在父子类的继承关系中:创建子类对象,访问同名成员方法的规则: 创建的对象时谁,就优先用谁,如果没有就向上找。Zi z = new Zi(); zi.method

​ (3) 重写(override)覆盖 覆写概念:在继承关系中,方法的名称一样,参数列表也一样。重写(override);方法的名称一样,参数列表也一样。 重载(overload):方法名称一样,参数列表不一样。覆盖的特点:创建的是子类对象,则优先用子类方法@override : 写在方法前面,用来检测是不是有效的正确覆盖重写。

​ (4)子类方法的返回值必须小于等于父类方法的返回值范围。子类方法的权限必须大于等于父类方法的权限修饰。

​ (5)public > protected > (default) > private 备注: default不是关键字,而是什么都不写,留空。

​ (6)设计原则:对于已经投入使用的类,尽量不要进行修改,推荐定义一个新的类,来重复利用其中共性内容,并添加改新内容。

​ (7)在继承关系中:字符类构造方法的访问 特点: 1 字类构造方法当中有一个默认隐含的"super()"调用,所以一定先调用的父类构造,后执行的子类构造。 2.子类构造可以通过super关键字来调用父类重载构造。3 super的父类构造调用,必须是子类构造方法的第一个语句。不能一个子类构造调用多次super构造。

​ (8)在7中。super有三种用法 。 this也有三种用法。在本类中的成员方法中,访问本类的另一个成员方法。this.method();

​ 在本类的构造方法中,访问本类的另一个构造方法。 this.Zi(23432);调用有参的构造。 注意:A:this(…)调用也必须是构造方法的第一个语句,唯一一个。B super 和 this 两种构造不能同时使用。

二: 抽象的方法 :如果父类当中的方法不确定如何进行{}方法体实现,那么这就应该是一个抽象方法。 图形要计算面计。(抽象没有说计算什么的面计)具体是抽象的反义词

​ (1)抽象方法:就是加上abstract关键字,然后去掉大括号,直接分号结尾。抽象类:抽象方法所在的类,必须是抽象类才行。在class之前写上abstract即可。

​ (2) 如何使用抽象类和抽象方法; 1. 不能直接创建new抽象类对象。2 必须用一个子类来继承抽象的父类。3. 子类必须覆盖重写抽象类父类当中所有的抽象方法。覆盖重写(实现):子类去掉抽象方法的abstract关键字,然后补上方法体大括号。 4. 创建子类对象进行使用。

好的,我明白了。继承抽象类是面向对象编程中的两个重要概念,它们可以帮助我们更好地组织代码和实现代码复用。继承是指一个类可以从另一个类中继承属性和方法,而抽象类则是一种特殊的类,它不能被实例化,只能被用作其他类的基类。 在继承抽象类的基础上,我们可以进行更加灵活的代码设计和实现。比如,我们可以定义一个抽象类 Animal,然后让不同的动物类(比如猫、狗、鸟等)继承这个抽象类,并实现自己特有的方法和属性。这样一来,我们就可以通过 Animal 类型的变量来引用不同种类的动物对象,从而实现代码的复用和扩展。 下面是一个简单的示例代码: ```python from abc import ABC, abstractmethod class Animal(ABC): def __init__(self, name): self.name = name @abstractmethod def make_sound(self): pass class Cat(Animal): def make_sound(self): print(f"{self.name} says: Meow!") class Dog(Animal): def make_sound(self): print(f"{self.name} says: Woof!") cat = Cat("Kitty") dog = Dog("Buddy") cat.make_sound() # 输出:Kitty says: Meow! dog.make_sound() # 输出:Buddy says: Woof! ``` 在上面的代码中,Animal 是一个抽象类,它定义了一个抽象方法 make_sound,这个方法在子类中必须被实现。Cat 和 Dog 类都继承了 Animal 类,并实现了自己特有的 make_sound 方法。最后,我们创建了一个 Cat 对象和一个 Dog 对象,并调用它们的 make_sound 方法,输出了不同的声音。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值