文档章节

继承与多态

W
 W_JJ
发布于 2015/10/12 18:57
字数 618
阅读 7
收藏 0
点赞 0
评论 0

我在学习继承的时候,得出以下结论

继承结论:

1、子类可以继承父类,可以实现父类中的方法,也可以重写

2、当都子类和父类拥有相同的方法优先时调用自己定义的方法

3、即使子类没有定义这个方法,编译器会去父类找这个方法的声明,注意:但是具体方法的实现,还是优先找自己的实现的方法。

4、如果直接调用父类的方法,而父类没有声明这个方法的时候,编译器不会去找子类,也就是会报错!

多态

1、父类的指针指向子类的对象

2、调用父类方法,允许子类用对象,不允许用父类的对象,原因就是没有使用多态

3、如果要改成多态,就需要把参数的类型由子类指针类型改成父类指针类型

具体表现我通过举例说明继承与多态。

首先建立父类的.h文件,在这里不做详细介绍

#import <Foundation/Foundation.h>

@interface _Car : NSObject

{

    int Tyre;

    double Speed;

}

-(void) setTyre:(int)giveTyre;

-(int) tyre;

-(void) setSpeed:(int)giveSpeed;

-(double) speed;

-(void) setCar:(_Car *)car;

@end


@implementation _Car

-(void) setTyre:(int)giveTyre

{

    Tyre = giveTyre;

}

-(int) tyre

{

    return Tyre;

}

-(void) setSpeed:(int)giveSpeed

{

    Speed = giveSpeed;

}

-(double) speed

{

    return Speed;

}

值得注意的在这里,

对象方法 无返回值 方法名字 (参数类型)参数名字

这是实现多态的格式

而且最关键的在于()中的内容,在Truck.h文件中也有,之后的对象建立也不做介绍。

-(void) setCar:(_Car *)car

{

    NSLog(@"公共汽车有%i,可以跑%.2f",Tyre,Speed);

}

@end


#import <Foundation/Foundation.h>

#import "_Car.h"

@interface Bus : _Car

{

    int Seat;

}


-(void) setSeat:(int)giveSeat;

-(int) seat;

//-(void) setCar:(_Car *)car;

@end


#import "Bus.h"


@implementation Bus


-(void) setSeat:(int)giveSeat

{

    Seat = giveSeat;

}

-(int) seat

{

    return Seat;

}



@end


#import <Foundation/Foundation.h>

#import "_Car.h"

@interface Truck : _Car

{

    int Wight;

}


-(void) setWight:(int)giveWight;

-(int) wight;

-(void) setCar:(_Car *)car;

@end


#import "Truck.h"


@implementation Truck

-(void) setWight:(int)giveWight

{

    Wight = giveWight;

}

-(int) wight

{

    return Wight;

}

-(void) setCar:(_Car *)car

{

    NSLog(@"货车有%i个轮胎,可以跑%.2fkm/h,%it",Tyre,Speed,Wight);

}

@end


#import <Foundation/Foundation.h>

//引用头文件

#import "_Car.h"

#import "Bus.h"

#import "Truck.h"


int main() {

    @autoreleasepool {

        //子类Bus

        Bus *bus = [Bus new];

        [bus setTyre:6];

        [bus setSpeed:80];

        [bus setSeat:12];

        [bus setCar:bus];

        //父类_Car

        _Car *car = [_Car new];

        [car setTyre:4];

        [car setSpeed:80];

        [car setCar:car];

        //子类Truck

        Truck *truck = [Truck new];

        [truck setTyre:6];

        [truck setSpeed:100];

        [truck setWight:100];

        [truck setCar:car];

    }

    return 0;

}

最后我觉得定义参数名不好,将导致自己对整个代码的模糊,所以需明确参数名。

© 著作权归作者所有

共有 人打赏支持
W
粉丝 0
博文 6
码字总数 5272
作品 0
榆林
C#.net技术内幕05-面向对象概念

继承: 类可以从基类继承得到所有的操作、属性、特性、事件以及这些内容的实现方法。但不能继承实例构造函数、析构函数和静态构造函数,也不能继承那些显示拒绝访问的成员。 继承扩展了基类,...

技术小胖子 ⋅ 2017/11/09 ⋅ 0

剖析C#的多态

一、什么是多态 面向对象程序设计中的另外一个重要概念是多态性。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。可以把一组对象放到一个数组中,然后调用它们的方法,在这种...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

深入剖析C#的多态

作者:天雨 一、什么是多态 面向对象程序设计中的另外一个重要概念是多态性。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。可以把一组对象放到一个数组中,然后调用它们的方...

晨曦之光 ⋅ 2012/03/09 ⋅ 0

Android基础之Java多态、继承、重载和重写的区别

一、继承(inheritance) 1.1 继承是什么 简而言之,继承就是在现有类的基础上,增加新的方法或者重写基类的方法的一种方式。 继承还是面向对象语言的基本特征【继承、多态和封装】之一。 在J...

silencezwm ⋅ 2017/11/12 ⋅ 0

Java 多态性理解

Java中多态性的实现 什么是多态 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 多态的定义:指允...

Oscarfff ⋅ 2015/05/11 ⋅ 8

对Java多态的理解

Java中多态性的实现 什么是多态 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 多态的定义:指允...

wf王帆 ⋅ 2016/05/22 ⋅ 0

Java多态性理解

Java中多态性的实现 什么是多态 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。 多态的定义:指允...

Carbenson ⋅ 2015/09/21 ⋅ 0

Java 复习 —— OOP

面向对象基本概念 1、面向对象(OOP、OOD)三大特点:封装、继承、多态。注意,抽象不是特点之一 2、面向对象编程是对数据进行抽象,而函数式编程是对行为进行抽象。现实世界中,数据和行为并...

learn_more ⋅ 2015/08/06 ⋅ 2

JavaSE学习笔记系列:面向对象(3)

1.toString方法 object中定义有toString()方法,其返回值是string类型,它描述的是当前对象的有关信息。 在进行string与其他类型数据的连接操作时(如system.out.println(“info”+person))...

landy8530 ⋅ 2017/12/19 ⋅ 0

Python是面向对象的语言吗?python编程

  Python虽然是解释型语言,但从设计之初就已经是一门面向对象的语言,对于Python来说一切皆为对象。正因为如此,在Python中创建一个类和对象是很容易的,当然如果习惯面向过程或者函数的写...

老男孩Linux培训 ⋅ 06/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IDEA创建SpringMVC+Mybatis+Maven项目

视频如下(加载有点慢请见谅,服务器不太好): 视频

影狼 ⋅ 8分钟前 ⋅ 0

前阿里P8架构师:精准定制Java架构师学习计划!

可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。 有不少朋友问,除了掌握J...

java高级架构牛人 ⋅ 11分钟前 ⋅ 0

zookeper学习

https://blog.csdn.net/u012152619/article/category/6470028

~少司命~ ⋅ 12分钟前 ⋅ 0

Spring MVC ,JSON,JQuery,不懂JQuery,跳过了

/spring-mvc-study/src/main/webapp/course_json.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD ......

颖伙虫 ⋅ 12分钟前 ⋅ 0

2018上海云栖大会workshop-日志数据采集与分析对接

摘要: 日志数据采集与分析对接 课程描述 通过日志服务采集用户、数据库、业务等访问数据。演示对于业务日志分析与处理,程序日志查询与监控,打通日志与数据仓库对接案例。 日志种类 网站访...

阿里云云栖社区 ⋅ 13分钟前 ⋅ 0

mahout demo

package com.datamine.CollaborativeFiltering.mysql; import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; import org.apache.mahout.cf.taste.impl.recommend......

xiaomin0322 ⋅ 14分钟前 ⋅ 0

red hat openstack 12配置要求

安装 openstack 之前,一般要规划整个系统中,到底要多少台机器来参与openstack, 根据rhosp12的官方文档: 最低要求是3台物理机,1台作为director,一台作为 controller ,一台作为computer....

tututu_jiang ⋅ 16分钟前 ⋅ 0

Rocket-Chip在GitHub上的各个源码

在github上通过搜索Rocket-chip可以得到36个结果:其中 https://github.com/freechipsproject/rocket-chip https://github.com/ucb-bar/riscv-boom https://github.com/ucb-bar/fpga-zynq (......

whoisliang ⋅ 21分钟前 ⋅ 0

【HAVENT原创】CentOS 6.5 下 Nginx 的安装与配置

nginx是轻量级的Web服务器、反向代理服务器及邮件服务器,具有占用内存少,并发能力强的优点,已被广泛应用。本文介绍目前最新版本 1.12.2 的安装。 各版本nginx下载地址:http://nginx.org/...

HAVENT ⋅ 27分钟前 ⋅ 0

查看linux系统重启之前的log -- last_kmsg

当 Linux Kernel 出现 BUG 的时候,后走入 panic flow,这个时候由于 Kernel 出现了严重的问题,adbd 也无法响应 adb 连接请求,这个时候想透过读取 Kernel Log Buffer 来看 Kernel Log 是不...

zyzzu ⋅ 28分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部