继承

来源:互联网 发布:淘宝上旺旺点不开 编辑:程序博客网 时间:2024/06/05 16:21
----继承概述:
1:多个类中存在相同属性和方法时,将这些类容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单独的那个类即可。
2:单独的这个类称之为父类或超类,继承这个类的类称之为子类。
3:子类可以直接访问父类中的非私有的属性和方法。
4:通过extends关键字让类于类之间产生继承关系。


注:要访问父类中的私有属性必须用共有的set和get方法,子类不能降低父类继承过来的方法权限。


----继承的特点:
1:Java中只支持单继承,不支持多继承(一个类中只能有一个父类,不可以有多个父类)
2:Java支持多层继承。


注:
1:不要仅为了获取其他类中的某个功能而去继承。
2:类与类之间是所属的关系。


----super关键字
1:super.XXX   表示引用父类中的属性或方法。
2:super()     表示访问父类中的构造方法。


注:
1:当子类与父类中出现同名的成员变量时,可以使用super进行区分。
2:子类要访问父类构造方法时,可以使用super语句,但必须放在第一行。


----方法覆盖
概念:
  子类中出现与父类一模一样的方法时,会出现覆盖操作(覆盖掉父类的方法),也称之为方法重写或方法复写。
应用:
  父类中只定义了功能的名字,而没有具体定义功能。那么子类在继承时,重写该方法,就可以实现不同的子类,实现不同的具体功能。


注:
1:父类中的私有方法不可以被覆盖。
2:在子类覆盖方法中,继续使用被覆盖的方法可以通过super函数名获取。
3:覆盖时,子类的方法权限一定不能小于父类的方法权限。
4:子类与父类同名属性也会出现覆盖。(也就是说覆盖的不仅仅只有方法,还有属性)
5:静态只能覆盖静态,但动态可以覆盖静态。


----子类的实例化过程
1:子类中所有的构造方法默认都会访问父类中空参数的构造方法。
2:每一个构造方法的第一行都有一条默认的语句super()。
3:子类会具备父类中的数据,所有要先明确父类是如何对这些数据初始化的。
4:当父类中没有空参数的构造方法时,子类的构造方法必须通过this或者super语句指定要访问的构造方法。


----final关键字
final修饰类: 无法被继承。
final修饰方法: 无法被覆盖。
final修饰变量: 变成常量。(只能被赋值一次)


注:内部类只能访问被final修饰的局部变量。


----抽象类:(关键字 abstract抽象 )
抽象概念:抽象就是将多个事物中的共性和本质抽取出来。


抽象类概念:Java中可以定义没有方法体的方法,该方法的具体实现由子类完成,该方法称之为抽象方法;包括抽象方法的类称之为抽象类。


抽象方法的由来:多个对象都具有相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么
只有功能声明,没有功能主体的方法称之为抽象方法。


特点:
1:抽象方法和抽象类必须用abstract关键字修饰。
2:抽象方法只有方法声明,没有方法主体,定义在抽象类中。
3:抽象类不可以被实例化。(也就是不可以用new创建对象)
4:抽象类通过其子类实例化,而子类需要覆盖抽象类中所有的抽象方法才可以创建实例,否则该子类也是抽象类。
5:抽象类是具有构造方法的。
6:不能用final和private修饰抽象类和抽象方法。
7:抽象类中可以没有抽象方法。(即空类)
8:抽象类中可以有非抽象的方法。


注:抽象类和普通类相比,除了多了一个抽象方法和不能实例化之外,并无其他的不同。


----接口:(关键字 interface接口;implements实现 )
概念:抽象的定义一个对象的标准。


格式:interface{ }


特点:
1:接口中只能有:成员常量(使用final和stantic修饰)和抽象方法。
2:接口可以多实现。
3:类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口。
4:接口与接口之间可以有多继承关系。
5:类可以同时继承抽象类和接口。
6:接口是程序功能的拓展。


注:在开发中如果即可以接口又可以抽象类,那坚决用接口!




总结:
1:类是实例的模板,抽象类是类的模板,接口是类的标准。
2:抽象类中的抽象方法必须被全部覆盖。
3:object是所有类的父类。
4:接口之间可以多继承,类与类之间只能单继承。
5:Java中只能单继承,但可以多层继承。









0 0
原创粉丝点击