面向对象继承与多态

this和super的区分:
    this代表本类对象的引用
    super本类对象父类的引用。
    this可以用于区分局部变量和成员变量同名的情况。
    一般,子类中不会出现和父类同名的成员变量。面试可能问到。
父类:
子类
测试类:
 
 
重写(override)和重载(overload)的区别:
    重载的特点:在同一类中。方法名相同,参数列表不同。
 
 
    重写的特点:要有继承关系。在子父类中方法的声明相同。(方法名和参数列表都相同)覆盖时,子类方法权限一定要大于等于父类方法权限。父类的权限不能是私有的。静态只能覆盖静态。
 
父类
子类
 
测试类
 
我现在给大家讲课,我讲课是基于课程大纲。围绕课程大纲的框架进行架构,通过重写方法,我可以完善大纲当中的不足,弥补方法当中的漏洞。
 
final关键字:
    final可以修饰类,方法,变量。final修饰的类不可以被继承。final修饰的方法不可以被覆盖。final修饰的变量是一个常量。只能被赋值一次。
 
 
final和private区别:
    final修饰的类可以访问。可以给其他容器赋值,但不能进行修改,如果设置final关键字的属性后,则不能使用构造函数传递数据。比如:设置了属性final后,不能再构造函数中this.不可修改的数据 = 修改的数据;如果这么写,会直接报错。
private修饰的属性,不能直接进行访问,而是必须通过get与set方法进行数据的传递。但他可以通过set方法进行对数据的修改。(不能直接方法,但可以通过方法访问,也可以通过方法修改。)
 
 
最后:
  final修饰的方法不可以被子类重写
  private修饰的方法表面上看是可以被子类重写的,其实不可以,子类是看不到父类的私有方法的。
  final修饰的变量只能在显示初始化或者构造函数初始化的时候赋值一次,以后不允许更改。
  private修饰的变量,也不允许直接被子类或一个包中的其它类访问或修改,但是他可以通过set和get方法对其改值和取值。
  学习程序要结合着生活中的例子去理解,不要就在程序中死扣,这样反而让你越来越越晕,比如理解继承有父亲有儿子,儿子从父亲那里继承非私有的东西很正常。
 
多态:
某一类事物的多种存在形态。
方法重载(静态多态)
方法重写(动态多态,对象多态)对象多态的前提
        类与类(或接口)要有继承(或实现)关系。
        一定要有方法的重写。
        一定要有父类或者接口的引用指向子类的对象。
            Person p = new SuperMan();
            SuperMan sm = (SuperMan)p;
多态思想:可以指挥同一类型的一批对象做事情。多态的出现让我们复杂的问题简单化了。
 
父类:
 
子类:
测试类:
 
posted @ 2017-11-30 19:07  横扫天下IT  阅读(239)  评论(0编辑  收藏  举报