黑马程序员_继承、接口、多态

---------------------------   android培训java培训、期待与您交流---------------------------

1  继承:

特点:
子类可以直接访问父类中的非私有的属性和行为。Java只支持单继承,不支持多继承。
应用:
有可能父类不能创建对象,需要子类创建。
创建子类对象可以使用更多的功能,包括基本的也包括特有的。
关键字:
extends 关键字:让类与类之间产生继承关系。
super  关键字:super代表父类引用 , 当子父类出现同名成员时,可以用super进行区分 子类要调用父类构造函数时,可以使用super语句。

2  函数覆盖(Override)

特点:
子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为重写或者复写。
父类中的私有方法不可以被覆盖。
在子类覆盖方法中,继续使用被覆盖的方法可以通过super.函数获取。
注意:
子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败。
静态只能覆盖静态。

3  子类的构造函数

特点:
子类中所有的构造函数默认都会访问父类中空参数的构造函数。因为每一个构造函数的第一行都有一条默认的语句super(); 。
如果要访问父类中指定的构造函数,可以通过手动定义super语句的方式来指定。且super语句一定定义在子类构造函数的第一行。

4  final关键字


特点:
 final可以修饰类,方法,变量。
 final修饰的类不可以被继承。是为了避免被继承,被子类复写功能。
 final修饰的方法不可以被覆盖。
 final修饰的变量是一个常量。只能被赋值一次。常用于修饰常量。 例如(public static final double PI = 3.14;)
 内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

5  抽象类

定义:
多个对象都具备相同的功能,但是功能具体内容有所不同,那么在抽取过程中,只抽取了功能定义,并未抽取功能主体,那么只有功能声明,没有功能主体的方法称为抽象方法。
格式:
修饰符abstract 返回值类型 函数名(参数列表) ;
特点:
抽象方法一定在抽象类中。
抽象类和抽象方法必须用abstract关键字来修饰。
抽象类不可以被实例化,也就是不可以用new创建对象。
抽象类通过其子类实例化,而子类需要覆盖掉抽象类中所有的抽象 方法后才可以创建对象,否则该子类也是抽象类。
abstract 关键字,和哪些关键字不能共存,为什么
final:被final修饰的类不能有子类。而被abstract修饰的类一定是一个父类。
private: 抽象类中的私有的抽象方法,不被子类所知,就无法被复写。而抽象方法出现的就是需要被复写。
static:如果static可以修饰抽象方法,那么连对象都省了,直接类名调用就可以了。可是抽象方法运行没意义。

6 接口

格式:
 接口中的成员修饰符是固定的,所以可以不写,默认就有 。
 成员常量:public static final
  成员函数:public abstract
特点:

类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口,用“,”隔开。
接口中的成员都是public的。
是不可以创建对象的,因为有抽象方法。
implement关键字:用于类实现接口。

7 多态

多态的前提:
类与类之间有关系,要么继承,要么实现,而且方法存在覆盖。
多态的体现:
父类的引用指向了自己的子类对象。
父类的引用也可以接收自己的子类对象。
多态自始至终都是子类对象在做着变化。
常用关键字
instanceof:用于判断多态是不是某类的类型。常用于判断是不是子类的类型,然后向下转型,使用子类特有方法。
特点:
在多态中,静态成员函数和成员变量的特点:无论编译和运行,都参考左边(引用型变量所属的类)。
在多态中,成员函数,编译看左边,运行看右边。

8  内部类

将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)。
特点:
内部类可以直接访问外部类中的成员,包括私有成 员。因为内部类中持有了一个外部类的引用,格式( 外部类名.this )
而外部类要访问内部类中的成员必须要建立内部类的对象。
内部类定义在成员位置上时,可以被private static成员修饰符修饰。 被static修饰的内部类只能访问外部类中的静态成员。
内部类定义在局部位置上时,可以直接访问外部类中的成员。同时可以访问所在局部中的局部变量,但必须是被final修 饰的。
格式:
1)
在外部其他类中创建内部类对象。
       外部类名.内部类名  变量名 = 外部类对象.内部类对象;
      例:Outer.Inner in = new Outer().new Inner();
2)在外部其他类中直接访问static内部类的非静态成员
       例: new Outer.Inner().function();
3)在外部其他类中,直接访问内部类的静态成员
       例:Outer.Inner.function();
注意:
当内部类中定义了静态成员,该内部类必须是static的。
当外部类中的静态方法访问内部类时,内部类也必须是static的。
内部类定义在局部时的注意:
1,
不可以被成员修饰符修饰
2,可以直接访问外部类中的成员,因为还持有外部类中的引用。但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。
匿名内部类:内部类的简写格式。
前提:
内部类可以继承或实现一个外部类或者接口。
格式:
 new 外部类名或者接口名(){覆盖类或者接口中的代码,(也可以自定义内容。)}。就是建立一个建立一个带内容的外部类或者接口的子类 匿名对象。

 

---------------------------   android培训java培训、期待与您交流---------------------------

 

 

详细请查看: http://edu.csdn.net/heima/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值