zoukankan      html  css  js  c++  java
  • 第十一周总结 继承、this和super的区别和用法、方法的重写和重载

    一、继承
    1.子类继承父类,通过一个关键字 extends
    2.子类的对象可以调用父类中的(public protected)属性和方法 当作自己的来使用
    3.子类可以添加自己独有的属性和方法
    4.子类从父类中继承过来的方法不能满足子类需要,可以在子类中重写(覆盖)父类的方法 更多的是指内容
    5.每一个类都有继承类。如果不写extends关键字,默认继承Object,如果写了extends则继承后面那个父类
    可以理解为Obiect类非常重要 是任何一个引用类型的父类(直接或间接的继承Object)Object类没有父类
    6.Java中继承是单个存在的(单继承)每一个类都只能有一个继承类(在extends关键字后面只能写一个类)
    可以通过传递的方式实现多继承的效果 后续还有多实现

    二、

               方法重写override                             方法重载overload
     1.类         产生两个继承关系的类                           一个类中的一组方法
                  子类重写父类的方法
     2.权限       子类可以大于等于父类                           没有要求
    *3.特征       final static abstract                       没有要求
                  父类方法是final          子类不能重写
                  父类方法是static          子类不存在
                  父类方法是abstract        子类必须重写 
                 (子类是具体必须重写 否则子类是抽象类 可以不重写)
    4.返回值       子类可以小于等于父类                           没有要求
    5.名字         子类与父类一致                                一个类中好多方法名必须一致
    6.参数         子类与父类一致                                每一个方法的参数必须不一致(个数 类型 顺序)
    *7.异常        运行时  编译时                                没有要求
                  如果父类方法抛出运行时异常
                  子类可以不予理会
                  如果父类方法抛出编译时异常
                  子类抛出异常的个数少于等于父类
                  子类抛出异常的类型小于等于父类
    8.方法体      子类的方法内容与父类不一致                                                         
    

    三、小细节知识点补充
    三目运算符
    (a>b)?x:y;
    Object类中的方法
    hashCode() 将对象在内存中的地址经过计算得到一个int整数
    public native int hashCode();
    equals() 用来比较两个对象之间的内容 Object默认效果是==
    可以比较基本类型(比较值)可以比较引用类型(比较地址)
    equals方法时Object中继承过来的方法 默认效果比较地址
    如果想要改变其规则 可以进行方法重写
    public boolean equals (Object obj){
    return (this
    obj);
    }
    toString() 打印输出时将对象变成String字符串
    public String toString(){
    return this.getClass().getName()+"@"+Interger.toHexString(this.hasCode)
    }
    getClass() 获取对象对应类的类映射(反射)
    wait() 线程进入挂起等待状态 存在方法重载
    notify() 线程唤醒
    notifyAll() 唤醒所有
    finalize() 权限修饰符时protected 在对象被GC回收的时候 默认调用执行的方法
    final finally finalize的区别
    protected void finalize(){
    }
    clone() 权限修饰符时protected 为了克隆对象

    四、关于this和super的使用
    this和super都是指代词 代替的对象
    this代替的是当前执行方法时的那个对象 不一定是当前类的
    super代替的是当前执行方法的对象的父类对象 空间内部的那个
    都能调用一般属性 和一般方法
    可以放置在类成员的任意位置(属性 方法 构造 块)
    注意调用一般方法的时候可以来回调用(写法 编译好用)执行可能产生问题(StackOverflowErro)

    实例

    package 类的继承;
    
    public class Animal {
        public Animal() {
        	System.out.println("animal中无参数的构造方法");
        }
        public Animal(int a) {
        	System.out.println("animal中int参数的构造方法");
        }
        public void eat() {
        	System.out.println("动物吃饭的方法");
        }
        
        public void sleep() {
        	this.eat();
        	//?动物吃饭    人类重写的吃饭
        	//代替的是当前调用方法是的那个对象   不一定是当前类(不是animal)
        	System.out.println("动物的睡觉方法");
        }
    }
    
    package 类的继承;
    
    public class Person extends Animal{
    	public Person() {
    		//隐藏了一行代码 super();
    		this(10);
    		System.out.println("person中的无参数构造方法");
    	}
    	
    	public Person(int a) {
            super();     //super指代的是当前执行方法时的对象的父类对象即animal
    		System.out.println("person中的int参数构造方法");
    	}
    	
    	//方法重写
    	public void eat() {
    		System.out.println("人类吃饭的方法 讲究色香味俱全");
    	}
    	
    	//添加一些独有的属性 或 方法
    	public void study() {
    		System.out.println("good good study, day day up");
    	}
    }
    
  • 相关阅读:
    leetcode 190 Reverse Bits
    vs2010 单文档MFC 通过加载位图文件作为客户区背景
    leetcode 198 House Robber
    记忆化搜索(DP+DFS) URAL 1183 Brackets Sequence
    逆序数2 HDOJ 1394 Minimum Inversion Number
    矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence
    递推DP URAL 1586 Threeprime Numbers
    递推DP URAL 1167 Bicolored Horses
    递推DP URAL 1017 Staircases
    01背包 URAL 1073 Square Country
  • 原文地址:https://www.cnblogs.com/shsy/p/12017902.html
Copyright © 2011-2022 走看看