继承、方法重写和多态

来源:互联网 发布:点击按钮执行php代码 编辑:程序博客网 时间:2024/06/07 03:13

继承、方法重写和多态

(Alt+shift+s打开source资源编写get、set的调用方法)

子类只能继承一个父类(extends) ,即单根性

继承具有传递性

(继承是达到了一种代码重用的作用)

 

super代表了父类对象,只能在子类中使用,super()表示父类构造函数,super.代表调用父类的属性

(如果有super()一定要放在第一句)

在继承体系里的初始化顺序是创建父类对象创建子类对象,

一个类里先给属性赋值,构造函数是最后给属性赋值。

执行顺序:(父类的属性->父类的构造函数->子类的属性->子类的构造函数)

  (不能继承父类的情况) 1. 子类不能访问父类private成员

                         2. 子类与父类不在同包,使用默认权限的成员

                         3. 构造函数(方法)

符合is-a的关系设计

 

Private                           (本类)

Friendly默认                     (本类、同包)

Protected                        (本类、同包、子类)

Public                           (本类、同包、子类、其他)

 

方法重载:同一个类里的同一方法,方法名一样但参数列表不同

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

规则:在继承体系的子类中,重写的方法名、参数、返回值类型必须与父类一致

      私有方法不能继承,因而也无法重写。

 

1、Java中的使用抽象类,限制实例化(无法实现实例化)

(public abstract Person(){},所以就限制了Person的实例化)

抽象方法!  @ 没有方法体{}的,仅仅是个声明,定义。   @抽象方法必须放在抽象类里面  @ 继承了含有抽象方法的抽象类,就必须在子类中重写抽象方法! 除非子类也是个抽象类。

 

2、Final的用法,类不希望再被其他类继承,or方法不希望被重写,or属性不希望被修改, 是常量。

 

3、static 可以用来修饰属性、方法和代码块。

Static修饰的属性和方法称为类属性(类变量) 、类方法。

静态的方法,不用声明实例便可以运行

不使用static修饰的方法和属性属于单个对象,通常称为实例属性(实例变量) 、实例方法。

静态属性的初始化就一次(在第一次加载的时候),以后调用就不会再初始化了。

 

多态:同一个引用类型,使用不同的实例而执行不同的操作。(父类引用子类对象)        使用继承、子类重写父类的方法、父类引用子类、调用重写方法。

 

引用类型转换:

向上转型:父类引用子类,子类重写父类的方法,用多态

向下转型:强制类型转换,父类转换为子类,用instanceof

Object o= list.get(i);

if(o instanceof Show){

Show s=(Show)o;

s.service();

}

0 0