• 第十一周总结 继承、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]945.使数组唯一的最小增量
    [leetCode]974. 和可被 K 整除的子数组
    [leetCode]1035.不相交的线
    [leetCode]面试题 10.01. 合并排序的数组
    [leetCode]面试题04.二维数组
    [面试题03]数组中的重复数字
    [leetCode]169.多数元素
    [leetCode]160.相交链表
    [leetCode]155.最小栈
    POJ 2127 Greatest Common Increasing Subsequence
  • 原文地址:https://www.cnblogs.com/shsy/p/12017902.html
Copyright © 2020-2023  润新知