方法重写,继承,多态

1.继承:编写父类(基类/超类),含有公共的属性和方法;编写子类(衍生类/派生类),能够继承父类的属性(extends),并含有自己特有的属性。

2.子类只能继承一个父类,不能同时继承两个父类(单根性)。

子类可以继承父类的,还可以继承父类的父类的属性和方法(传递性)。

3.super关键字:代表父类对象,在子类对父类的属性和方法进行处理时必须用super,super只能在子类中使用。super()表示父类无参构造函数,super.属性 表示调用父类的属性。

4.在继承体系中,进行初始化时,创建子类对象(new)时,程序会自动创建父类对象。在对象初始化时,先处理属性(对属性赋值(默认值或确定的值)),再执行构造函数。

在继承中,先执行父类的属性,再执行父类的构造函数,然后执行子类的属性,再执行子类的构造函数。

5.子类不能继承的情况:子类不能访问父类的私有成员;不能调用父类的构造函数;子类和父类不在同一个包里,使用默认访问权限的成员。

6.何时使用继承:满足is-a的关系。

7.方法的重写:在继承关系的子类中,重新定义了父类的某个方法。

重写的方法名,参数,返回值类型必须与父类相同。子类中重写的方法的访问修饰符不能比其父类的严格。不能对私有的方法进行重写。

8.abstract关键字:抽象类,任何类前面加了abstract,就不能进行实例化(new创建对象)。但是可以定义一个抽象类的对象变量,但是它只引用非抽象子类的对象。例如Person类是抽象类,Student是其子类,则Person p=new Student();是正确的。

抽象方法:public abstract void play();(无实际意义)

抽象方法必须放在抽象类中(抽象类中可以没有抽象方法);没有方法体(无大括号);抽象方法必须在子类中实现(在子类中对父类中的这个抽象方法进行重写),除非子类是抽象类。

9.final关键字:最终的,不能再派生了,如public final class Student extends Person(){}则这个类不能被其他类继承了;若final修饰方法,如public final void work(),则这个方法是最终的方法,不能被重写;若final修饰属性,属性值不能被修改,可以看做常量。

10.static关键字:静态,static修饰的属性和方法称为类属性和类方法,不用new创建实例,可以直接使用,类名.属性/方法;而不用static修饰的属性和方法必须创建一个对象,然后用对象.属性/方法。

11.静态代码块先执行,然后构造函数等后执行。静态属性的初始化只进行一次,之后不用再初始化,直接使用即可。

12.多态:同一事物因为条件不同,产生的结果不同。

在程序中,可以用子类重写父类的方法,然后父类引用子类的对象,调用方法,实现多态。

多态 Instrument ins=new Piano();

ins.play();

这两步是父类引用子类的对象,再调用相关的方法实现相应的功能(这里play   是piano的而不是instrument的)

13.向上转型:父类引用子类(多态)

向下转型:强制类型转换,父类转换成子类(用instanceof来判断是哪个子类)

时间: 2024-10-27 17:11:24

方法重写,继承,多态的相关文章

java的方法重写 ,多态和关键字 instanceof和final

package cn.pen; /*final 是一个java的关键字,用于修饰局部变量.属性.方法.类,表示最终的意思. final修饰类表示最终类,无法被继承.public final class Penguin{} final修饰符方法,方法就不能被重写.所以final修饰的是最终子类或最终类 final 修饰属性,经常和static搭配使用,形成静态常量.静态常量不能被改变 修饰变量final 修饰基本数据类型 ,表示a中的内容(值)不能被改变final int a = 10; fina

oc-继承(inherit) 方法重写 继承与组合

重写:

c# 中面相对性的三个特点:封装,继承,多态, 以及c#中隐藏(new)和方法重写(override)和重载(overload)的区别

封装 1)封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问,通常有两种访问方式:set 设置,get 获取. 2)封装结果:存在但是不可见. 3) 访问修饰符 声明的可访问性                                 含义 public                                    访问不受限制. protected                              访问仅限于本类或者其子类(可以跨程序集). p

面向对象的过程、继承、封装、多态;抽象类、访问修饰符的使用、引用类型强制转换、方法重写@override与重载、空指针异常、super关键字

面向对象设计的过程:     发现类-发现类的属性-发现类的方法-优化设计: 封装: private类型的,只可以在本类中使用,当其他类调用此类时,不可使用,因此可以设置setget方法,如下所示: 构造------------------------ 默认有无参构造,若设置了有参构造,则就没有默认的无参构造了,需要自己再添加一个 方法重载------------------- 方法名相同,参数列表不同(类型,数量,顺序不同,与参数名无关): 与返回值,访问修饰符无关 面向对象(OO)的优点--

继承、多态及方法重写、重载

1.多态: 多态指的是同一个方法的调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现完全不同. 多态的要点: (1)多态是方法的多态,不是属性的多态(多态与属性无关): (2)多态的存在要有3个必要条件:继承.方法重写.父类引用指向子类对象: (3)父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了. /** * - - - (1)多态是方法的多态,不死属性的多态(多态与属性无关): * - - - (2)多态的存在要有3个必要条件:继承.方法重写.父类

虚方法,重写————继承、多态、面向对象!

1. this 不能直接调用 非static成员class A{static public void M1(){ Hello(); // 错误 在static成员中不能 直接调用非static成员 A a=new A(); a.Hello();}public void Hello(){ F1 =10: M1(); A.M1(); this.M1() //错误 不能调用}} 2. 静态类不能new: 静态类中不能声明非静态成员. 3.sealed 密闭类不能被继承 Fromwork 4.Paint

oc语言学习之基础知识点介绍(四):方法的重写、多态以及self、super的介绍

一.方法重写 /* 重写:当子类继承了父类的方法时,如果觉得父类的方法不适合,那么可以对这个方法进行重新实现,那么这个就重写. 注意:也就是说,一定只能发生在父类和子类关系中. 然后是子类重新实现父类的方法,绝对不是再写一个自己类的方法. 代码中原话叫:子类重写父类方法. 因为父类定义的方法不一定适用于子类. 注意:如果有重写,那么调用的是自己重写后的方法,如果没有重写,那么就调用的是父类的方法. 所以我们方法有一个执行的过程: 1.先去自己类里面找这个方法,如果找到就执行. 2.如果没找到,就

多态,虚方法重写,抽象类,接口

简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override 父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了virtual关键字的方法才可以被子类重写 子类重写父类的方法使用的是override关键字 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 多态 { public

重载,继承,重写和多态的区别

重载,继承,重写和多态的区别 重载,继承,重写和多态的区别: 1)继承是子类获得父类的成员, 2)重写是继承后重新实现父类的方法. 3)重载是在一个类里一系列参数不同名字相同的方法. 4)多态则是为了避免在父类里大量重载引起代码臃肿且难于维护. 网上看到一个有趣的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法. 下面的例子包含了这四种实现: class Triangle extends Shape { public int getSides() {  return 3; }} c