• 继承、封装


    本来想继承、多态、和封装写在一起的,最后想想还是把多态独立出来更详细的讨论一下吧(写在下一篇blog里)

    一、封装

    1.封装概念:

    将方法和属性封装到同一个类中

    二、继承

    1.继承概念:

    Java是单继承,也就是意味着一个子类(基类)只能一个父类.用extends关键字实现

    子类对象被创建时会先调用父类的构造方法,生成父类对象,然后再调用子类的构造方法,生成子类对象;

    即:现有父再有子

    另外:类和接口都能继承多个接口(特殊的抽象类),后面blog写

    2.继承的特点(父类与子类的关系):

    2.1 父类有的子类有

    2.2 父类没有的,子类也可以有

    2.3 父类有的,我还可以改

    3.继承注意点

    3.1 子类的构造方法隐式调用父类的无参构造方法:

    3.1.1 需要指定调用父类的有参构造方法可以用Supper();//需要放在第一行(参照this()用法)

    3.2 子类可以继承父类的方法和属性

    3.3 子类不能继承父类的构造方法

    4.定义一个类时若没有显式声明一个父类,那么系统会默认将父类指向object类


    小彩蛋:

    方法的重写(override)不是重载啊:

    满足条件是:

    1.1重写在子类和父类中

    1.2类型、方法名、参数都需要相同

    ps:若想要调用父类中被重写的类:

    在子类中super().XXX就可以了(注意:这个可以不必要放在第一行)

    贴上练习代码君:

    package com.jacob.javase;



    /*
     * 继承和封装
     */
    public class InheritAndPackaging extends Parent {
    public InheritAndPackaging() {
    // 调用父类构造函数,并创建父类对象
    super(3);
    // super.test();
    System.out.println("child");
    }


    // super.test();需要存放在方法体中
    // 重载的父类的方法(跨类重载)
    public void test(int a) {
    System.out.println("overLoad Parent!");
    }


    // 重写父类方法:要求:子类的访问修饰范围必须大于父类的访问修饰范围
    public void test() {
    // super();需要声明在构造函数中
    super.test();
    System.out.println("override Parent!");
    }


    public static void main(String[] args) {
    InheritAndPackaging inhert1 = new InheritAndPackaging();
    inhert1.initial=1;
    System.out.println("此时父类中的初始值"+inhert1.initial);
    InheritAndPackaging inhert2 = new InheritAndPackaging();
    System.out.println("此时父类中的初始值"+inhert2.initial);
    // super.test();不能使用在静态文本中
    // inhert.test();
    // inhert.test(5);
    }
    }


    // static不能修饰类:只能用public, abstract & final
    class Parent {
    int initial=0;
    // 构造函数只能用:protected、public、private修饰
    public Parent(int i) {
    System.out.println("has the ags parent");
    }


    public Parent() {
    System.out.println("no args parent");
    }


    public void test() {
    System.out.println("this is will be overrided of testParent");
    }
    }













  • 相关阅读:
    利用sklearn训练LDA主题模型及调参详解
    关联规则挖掘:Apriori算法(基于Groceries数据集)
    极大连通子图与极小连通子图
    TCP协议“三次握手”与“四次挥手”详解(下)
    TCP协议“三次握手”与“四次挥手”详解(上)
    95题--不同的二叉搜索树II(java、中等难度)
    96题--不同的二叉搜索树(java、中等难度)
    CRC循环冗余校验---模2除法解析
    黑盒测试用例设计方法总结
    软件配置管理和软件维护的区别【详细】
  • 原文地址:https://www.cnblogs.com/xieji233/p/6155642.html
Copyright © 2020-2023  润新知