面向对象_05【类的继承:extends、重写父类】

类的继承:现有类的基础上构建一个新的类,构建出来的类被称作子类,子类可继承父类的属性和方法。

什么时候定义继承?
当类与类之间存在着所属关系的时候,就定义继承。xxx是yyy中的一种==>xxx extends yyy

继承好处:
1,提高代码复用性
2,让类与类之间产生关系,给多态提供前提

单继承:一个子类只能有一个直接父类。
多继承:一个子类可以有多个直接父类(Java中不允许,进行改良)
==>不直接继承,因为多个父类中有相同成员,会产生调用的不确定性
在Java是通过“多实现”的方式来体现

继承的需注意的地方:
1,类只支持单继承,不允许多重继承,但对C++中的多继承机制进行改良。一个子类只能有一个直接父类,如下是错的继承方式
  class A{}
  class B{}
  class C extends A,B{}
2,多个子类可继承一个父类
  class A{}
  class B extends A{}
  class C extends A{}
3,多层继承类(就会出现继承体系)
==>当使用一个继承体系时:
1,查看该体系中的顶层类,了解该体系的基本功能
2,创建体系中的最子类对象,完成功能的使用
  class A{}
  class B extends A{} //类B继承A,B是A的子类
  class C extends B{} //类C继承B,C是B的子类,同是也是A的子类
4,Java中,子类父类只是相对的概念,一个类是父类的同时,也可以是另一个类的子类。如3,:B是C的父类,同时也是A的子类

Example:

 1 //继承的简单实例
 2 package new_Object;
 3 //定义Person类
 4 class Person_09{
 5     //定义共有的属性
 6     String name;
 7     int num;
 8     //定义打印方法
 9     public void printf(){
10         System.out.println(name+"\t"+num);
11     }
12 }
13 //学生类
14 class Student_1 extends/*继承*/ Person_09{
15     /**
16     String name;
17     int num;
18     public void speak(){
19         System.out.println(name+"\t"+num);
20     }*/
21 }
22 //工人类
23 class Work extends Person_09{
24     /**
25     String name;
26     int num;
27     public void speak(){
28         System.out.println(name+"\t"+num);
29     }*/
30 }
31 public class Extends_01 {
32     public static void main(String[] args) {
33         Student_1 stu=new Student_1();
34         stu.name="张三";
35         stu.num=2015112401;
36         stu.printf();
37         Student_1 work=new Student_1();
38         work.name="李四";
39         work.num=1001;
40         work.printf();
41     }
42 }

继承的误区:
class DemoA{
void speak1(){}
void speak2(){}
}
class DemoB extends DemoB{
void speak1(){}
void speak3(){}
}
改良(向上抽取继承)==v
class Demo{
void speak1(){}
}
class DemoA{
//void speak1(){}
void speak2(){}
}
class DemoB extends Demo{
//void speak1(){}
void speak3(){}
}

重写父类:继承关系中,子类自动继承父类中定义的方法,有时需要在子类需要对继承方法改写。
注:在子类中重写的方法需要和父类被重写的方法具有相同的方法名,参数列表以及返回值类型

 1 //重写父类
 2 package new_Object;
 3 class Animal_02{
 4     String name;
 5     //定义总的动物叫法
 6     public void shout(){
 7         System.out.println("种类"+" "+name);
 8     }
 9 }
10 class Dog_02 extends Animal_02{
11     //单独定义狗的叫法
12     public void shout(){
13         System.out.println(name+" "+"动物发出的叫声:旺旺");
14     }
15 }
16 //定义其他动物类
17 class Horse_02 extends Animal_02{}
18 class Bird_02 extends Animal_02{}
19 public class Example02_Extends {
20     public static void main(String[] args) {
21         Dog_02 p1=new Dog_02();
22         p1.name="小狗";
23         p1.shout();/*调用的是子类的shout*/
24         //以下调用时父类的shout
25         Horse_02 p2=new Horse_02();
26         p2.name="马";
27         p2.shout();
28         Bird_02 p3=new Bird_02();
29         p3.name="鸟";
30         p3.shout();
31     }
32 }

时间: 2024-11-13 23:53:58

面向对象_05【类的继承:extends、重写父类】的相关文章

面向对象,类的继承

面向对象一种认识世界.分析世界的方法论.将万事万物抽象为类.类class类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合.用计算机语言来描述类,就是属性和方法的集合.对象instance.object对象是类的具象,是一个实体.对于我们每个人这个个体,都是抽象概念人类的不同的实体. 面向对象3要素 封装组装:将数据和操作组装到一起.隐藏数据:对外只暴露一些接口,通过接口访问对象.比如驾驶员使用汽车,不需要了解汽车的构造细节,只需要知道使用什么部件怎么驾驶就行,踩了油门就能跑,可以不了

python3 面向对象、类、继承、组合、派生、接口、子类重用父类方法

对象是特征(变量)与技能(函数)的结合体而类是一系列对象共同的特征与技能的集合体 class teacher: lesson = "python" def __init__(self,name,color,age): # 只干初始化的活 self.name = name if not isinstance(name,str): raise TypeError self.color = color self.age = age def jineng(self): print('新技能')

PHP 类的继承 extends 关键字

PHP 类的继承 PHP 类的继承是指建立一个新的派生类,从一个或多个先前定义的类中继承数据和方法,而且可以重新定义或加进新数据和方法,从而建立了类的层次或等级. 我们称已存在的用来派生新类的类为父类,由已存在的类派生出的新类为子类.继承是面向对象的三大特性之一. 通过继承机制,可以利用已有的数据类型来定义新的数据类型.所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员. 注意:不同于 Java 等语言,在 PHP 中,一个类只能直接从一个类中继承数据,即单继承. 使用 exten

类、面向对象、类的继承

类: 它是用于描述"某一些具有共同特征"的物体的概念,是某一类物体的总称. 通常,一个类所具有的共同特征包括2大方面的信息: 外观,形状,描述,数据.....属性 行为,动作,功能........方法 举例子: 人类:动物类:鸟类 对象: 它是指一个具体的"物体",该物体隶属于某个"类别"(类). 通常,对象离不开类,没有类,就不能有对象. //创建类 class computer{ //定义属性 var $code ="c1"

Objective-c 类的继承 方法重写 方法重载

一.类的继承 Objective-c中类的继承与C++类似,不同的是Objective-c不支持多重继承,一个类只能有一个父类,单继承使Objective-c的继承关系很简单,易于管理程序. Objective-c中所有类的父类是NSObject. Objective-c中类的继承例子: [cpp] view plaincopy @interface Person: NSObject { NSString* name; int age; } - (NSString*) name; - (int)

python类的继承和重写

构造方法: def __init__(self) 路径: e:/pythonpro/liuyun/class02.py #——————类的构造方法——————- class person(): name ="张翰" sex = "男" #构造方法,固定的写法:初始化类 def __init__(self,xb): self.sex = xb self.test() def test(self): print("这是test方法") d = per

python面向对象-4类的继承与方法的重载

1.类的继承与方法的重载 上面就是先定义了一个类A,然后由定义了一个类B,B继承了类A,这样B就有了A的非私有属性和方法. 1 class Washer: 2 company='ZBL' 3 def __init__(self,water=10,scour=2): 4 self._water=water #不想让用户直接访问实例变量,可以标志成私有 5 self.scour=scour 6 self.year=2000#这是生产日期 7 #属性包装,将water属性包装成方法,用户使用water

python面向对象(类的继承)

一. 继承的初识 在python3中 所有的类都继承自object class ParentClass1: pass class ParentClass2: pass class ChildClass(ParentClass1):pass #单继承 class ChildClass1(ParentClass1,ParentClass2):pass #多继承 print(ParentClass1.__base__) print(ChildClass.__base__) #会显示该类的一个父类 pr

python 类 六:继承自动寻找父类

本系列博客(python 类) 的部分例子来自于 <<python 核心编程 第二版>> 前面我们谈到 python 继承,是可以引用父类的__init__方法的 ,并在此基础上添加子类自己的特殊的属性的设定,形成子类自己的__init__  构造函数. 在这种方法中,必须显示的指出父类的名字. #coding:utf-8 class p(object):     def __init__(self,nm):         self.name  = nm class c(p):

iBatis.net 类的继承extends

<resultMaps> <resultMap id="FullResultMap" class="t_c_doctor"> <result property="doctor_byyy_id" column="doctor_byyy_id"/> </resultMap> <resultMap id="TeamDoctor" class="Use