继承和多态

来源:互联网 发布:美国精神病人 知乎 编辑:程序博客网 时间:2024/04/27 23:15

继承和多态

继承

class   A extends  B { }

A是子类,B是父类

特点:

子类自动获得了父类公有的属性和方法

子类可以对父类的方法进行修改(方法重写)

可以在子类中添加新的方法

使用super关键字来访问父类的成员(属性,方法)

父类中用protected 修饰的成员(属性和方法)也可以被访问

父类的私有成员子类不能继承但是可以访问

父类具有单根性,一个子类只能有一个父类

继承是代码重用的一种方式

 

父类中不能被子类继承的:

private 成员

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

构造方法

final 关键字修饰的类,方法,属性

 

 

 

 

方法重写

在子类中重写父类的方法

1.     方法名,参数,返回值都不能变,一般访问权限也不要改变

2.     如果要调用父类的方法则要用super关键字

 

 

子类调用父类的构造方法:

super();---------------------------》可以默认添加

super(参数列表);

super只能是子类构造方法的第一条

 

 

子类继承父类后的访问顺序

父类属性—>父类构造方法—>子类属性—>子类的构造方法

先从子类的构造方法中找父类的构造方法,接着去执行父类,执行完后再执行子类,这时子类构造方法的第一句(super())将不再执行。

 

方法重写与方法重载的比较

        位置   方法名   参数列表  返回值     修饰符

重写    子类    相同      相同      无关     子类大于父类

重载    同类   相同       不同       无关   无关

 

Object

它是java中最顶层的基类,在System.out.println( Oblect obj)

执行过程中,先调用toString,再打印出toString的结果

继承可提高程序的可扩展性和可维护性

 

二.多态

向上转型和向下转型

向上转型:父类类型接受子类实例(对象),转型时没有风险

1,          Super  sup = new Sub() 父类引用指向子类对象

2,          void fsuper s{

……;

}

fnew Sub();

向下转型:将父类类型的对象强制转换为子类类型,在转换过程中存在风险,通常在转换时要做判断,只有是这一子类类型的时候才进行强制转换,通常使用 instanceof运算符进行判断

用法: ifpet  instanceof   Cat{Cat cat =Catpet},此语句将Pet类型的对象pet强制转换为Cat类型

 

程序中的多态:同一个引用类型使用不同的实例而执行不同的操作

在设置程序的类型时尽量使用父类或接口。在多态中一定要有方法的重写

面向对象的设计原则:单一职责原则,开闭原则,里氏替代原则

原创粉丝点击