黑马程序员 继承

来源:互联网 发布:淘宝网的商品分类 编辑:程序博客网 时间:2024/06/01 09:37

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

1,继承概述
把多个类中相同的内容或者功能给提取出来定义到一个类中,让继承的它的类都有这些内容或者功能。
体现

class OldPhone{    public void call()    {        System.out.println("打电话");    }}class NewPhone extends OldPhone{    public void send()    {        System.out.println("发信息");    }}class PhoneDemo{    public static void main(String[] args)     {        NewPhone p = new NewPhone();        p.call();        p.send();    }}

2,好处:
(1)提高代码的复用性;
(2)让类与类之间产生关系,有了这个关系,才有了多态的特性

3,注意:
(1)不要为了获取其他类的功能,简化代码而继承;必须是类与类之间有所属关系才可以继承。

(2)Java只支持单继承,不支持多继承。因为多继承容易带来安全隐患,当多个父类中定义了相同函数,但函数内容不同时,子类对象不确定要进行哪一个。但是java保留这种机制,并用另一种体现形式来完成表示,多实现。

(3)子类只能继承父类非私有的成员变量和成员方法,只能通过get()和set()方法或者用父类的带参构造访问

(4)当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致,这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容:
(a)父类中的私有方法不可以被重写
(b)子类方法访问权限一定要大于或等于父亲的方法权限
(c)静态的方法只能被静态方法重写

体现

//子类覆盖父类示例  class Fu2  {      void show()      {          System.out.println("show1");      }  }  class Zi2 extends Fu2  {   //子类覆盖父类内容并拓展自身内容      void show()      {             System.out.println("show2");          System.out.println("show3");      }  }  class ExtendsDemo2    {      public static void main(String[] args)       {          Zi2 z=new Zi2();          z.show();      }  }  

4,this与super
This:
代表本类对象的引用
Super:
代表父类的内存空间的标识(可以理解为父类的对象引用)
当子父类出现同名时,使用super
注意:
(a)子类的所有的构造函数,默认都会访问父类中空参数的构造函数,因为子类中每一个构造函数的第一行都有一句隐式语句super()
(b)当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。当然,子类的构造函数第一行也可以手动指定this语句访问本类中的构造函数
体现

//子父类中的构造函数示例  class FuStudent  {         private String name;      FuStudent()      {          System.out.println("学习");      }      FuStudent(String name)      {          this.name=name;          System.out.println("name="+this.name);      }  }  class ZiStudent extends FuStudent  {         ZiStudent()      {   //super();          System.out.println("运动");          }      ZiStudent(String name)      {          super(name);      }  }  class ExtendsDemo3    {      public static void main(String[] args)       {          ZiStudent z=new ZiStudent();          ZiStudent z2=new ZiStudent("李四");      }  }  

5,final关键字
(a)是最终的意思,它可以修饰类,修饰成员方法,成员变量
(b)它修饰的成员方法,是不可以被子类重写的
(c)它修饰的类不能被继承
(d)它修饰的成员变量,其实是一个常量,规范全大写,单词间由”_”连接
(e)内部类只能访问final修饰的局部变量

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

0 0