zoukankan      html  css  js  c++  java
  • [总结] 继承

      继承
    在面向对象中,可以通过扩展一个已有类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(子类指向父类)
    语法:public class 子类 extends 父类{
    如何判断类具有继承关系:
        1. has - a (组合)
         2.is - a (继承).
    使用extends 关键字实现继承关系
    Eployee 父类(又叫基类)
    Hourly 子类 (又叫派生类)
    基类可以有多个子类。可又叫超类。列:Object;
    继承的优点
        1.代码的可重用性
        2.父类的属性和方法用于类
        3.子类可以扩展父类的属性和方法
        4.设计应用程序时变得更加简单
    *扩展*
    *Java中一个类只能有一个类,在某些OOp语言如C++中允许子类有多个父类*
    *Object是所有类的超类,后面是共有的9个最常用的属性。需全部记住。*
    *不是引用类型都不能用“= =”,而是应用类型所指向的“引用”业务相比较,“= =”判定两个引用是否指向同一个对象,equal.()是判定两个对象在业务上相等*

    方法重写
    子类将父类继承的方法再实现一次,叫做方法的重写,当我们打印对象或对对象进行字符串的操作就在调用toString来于Object的toString返回的全类名+十六进制数
    当然我们可以根据自己的需要重写toString
    方法重写规则---从父类继承而来的方法,子类重新实现(重载不要返回类型,只要求方法名一致)
        1.方法名必须保持一致
        2.参数列表必须保持一致
        3.返回类型必须保持一致
        4.访问修饰符必须大于等于父类
        5.子类重写后的方法不能抛出比父类重写前的方法更多的异常
        6.构造方法不能被继承,也没有重写,可以重载

    this. 和 super.,this()和super()的区别:

    this.指代当前对象能操作定义在本类上的属性方法
         能操作定义当前对象的父类上的被访问修饰符允许访问的属性方法

    super.指代当前对象的父类部分
          不能操作定义在本类的属性和行为。
          能访问定义在父类上的被允许访问的属性和方法
          只有当本类中调用被重写方法之前的效果时使用super.其他时候都使用this。

    this()指调用本类的其他构造,只能写在构造中,且必须是第一行

    super()值调用父类指定的构造方法,只能写构造中且只能写在构造方法中第一句
             super()如果不写会默认调用父类的无参构造

    // 面试题:调用一个无参构造方法,让子类和父类的都执行一遍

        public Class Father(){
    
        public Father(){
        this(1);
    
        System.out.pritln("在父类的构造函数中 1");
        }
        public Father(int a ){
        
        this (0,a)
        
        System.out.pritln("在父类的构造函数中 2");
    
        }
    
        public Father(int a ,int b){
        
        System.out.pritln("在父类的构造函数中 3");
    
        }
    }
        public Class Son(){
    
        public Son(){
        this(1);
    
        System.out.pritln("在子类的构造函数中 1");
        }
    
        public Son(int a ){
        this(1,a);
    
        System.out.pritln("在子类的构造函数中 2");
        }
    
        public Son(){
    
        System.out.pritln("在子类的构造函数中 1");
        }
    }
      public Class Test(){
    
        public void main (String [] args){
    
        Son s = new Son();
       
        }

     


    final 关键字
    当我们用final 来修饰一个类时,该类不能被继承 (叫做最终态/终态类)
    方法被final修饰该方法也不能被继承,(修饰构造方法无意义,构造方法不能被继承)

    final使用的几种情况
    finalize()是一个方法名不是关键字,是Object的方法,用来销毁对象方法,由GC回收调用
    toString()返回一个对象的字符串的描述,使用机制为:

        public String toString(){
        return this.name +"住在"+this.address;
        }

  • 相关阅读:
    [原]实例-简单设计&精简代码&复用代码
    [原创]实例-少用单例及降低耦合
    c#实现数据集合转换为csv文本
    [转]SqlServer索引的原理与应用
    [转]AngularJS:何时应该使用Directive、Controller、Service?
    [转]AngularJS移动开发中的坑汇总
    [转]Hibernate对象的三种状态
    [转]AngularJS Cookies Example
    [转]LESS CSS 框架简介
    [转]为ReportViewer导出的PDF文档加上水印
  • 原文地址:https://www.cnblogs.com/jrc2016/p/6142475.html
Copyright © 2011-2022 走看看