首页 > 其他分享 >封装、继承和多态

封装、继承和多态

时间:2024-07-13 23:30:22浏览次数:13  
标签:封装 构造方法 继承 子类 多态 static println 父类 public

封装

  • 1、良好的封装能够减少耦合。
  • 2、类内部的结构可以自由修改。
  • 3、可以对成员进行更精确的控制。
  • 4、隐藏信息,实现细节。

继承

  • Java 有三种实现多继承效果的方式,分别是内部类、多层继承和实现接口。

  • 父类的构造方法不能被继承

  • 子类的构造过程必须调用其父类的构造方法:Java 虚拟机构造子类对象前会先构造父类对象,父类对象构造完成之后再来构造子类特有的属性,这被称为内存叠加。

  • 如果子类的构造方法中没有显示地调用父类构造方法,则系统默认调用父类无参数的构造方法。

  • Java子类重写继承的方法时,不可以降低方法的访问权限子类继承父类的访问修饰符作用域不能比父类小

  • 继承当中子类抛出的异常必须是父类抛出的异常或父类抛出异常的子异常。

static修饰符

class C1{
    public  int a;
    public C1(){}
   // public static C1(){}// 构造方法不允许被声明为static
    public static void doA() {}
    public static void doB() {}
}
class C2 extends C1{
    public static  void doC()//静态方法中不存在当前对象,因而不能使用this和super。
    {
        //System.out.println(super.a);
    }
    public static void doA(){}//静态方法能被静态方法重写
   // public void doB(){}//静态方法不能被非静态方法重写
}

子类父类初始化顺序

  1. 父类中静态成员变量和静态代码块
  2. 子类中静态成员变量和静态代码块
  3. 父类中普通成员变量和代码块,父类的构造方法
  4. 子类中普通成员变量和代码块,子类的构造方法
class Father{
    // 父类构造方法 第四
    public Father() {
        System.out.println(++b1+"父类构造方法");
    }

    // 父类static 第一 注意顺序
    static int a1=0;
    static {
        System.out.println(++a1+"父类static");
    }

    // 父类成员变量和代码块 第三
    int b1=a1;
    {
        System.out.println(++b1+"父类代码块");
    }
}
class Son extends Father{
    // 子类构造方法 第六
    public Son() {
        System.out.println(++b2+"子类构造方法");
    }

    // 子类static第二步
    static {
        System.out.println(++a1+"子类static");
    }

    // 子类成员变量和代码块 第五
    int b2=b1;
    {
        System.out.println(++b2 + "子类代码块");
    }
}

多态

Java 的多态是指在面向对象编程中,同一个类的对象在不同情况下表现出来的不同行为和状态。

  • 子类可以继承父类的字段和方法,子类对象可以直接使用父类中的方法和字段(私有的不行)。
  • 子类可以重写从父类继承来的方法,使得子类对象调用这个方法时表现出不同的行为。
  • 可以将子类对象赋给父类类型的引用,这样就可以通过父类类型的引用调用子类中重写的方法,实现多态。

多态的前提条件

  • 子类继承父类
  • 子类重写父类的方法
  • 父类引用指向子类的对象

标签:封装,构造方法,继承,子类,多态,static,println,父类,public
From: https://www.cnblogs.com/sprinining/p/18300987

相关文章

  • c++继承特点,菱形继承,访问方式,默认成员函数
    目录继承概念继承特性继承后成员访问的方式的变化子父类成员重命名派生类的默认成员函数​编辑菱形继承小tip继承概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,......
  • 面向对象-接口和多态
     1.接口的特性:接口里的数据成员必须初始化,且数据成员均为常量;接口里的方法必须全部声明为abstract,也就是说,接口不能像抽象类一样保有一般的方法,而必须全部是“抽象方法”。2.接口定义的语法:interface接口名称//定义抽象类{final数据类型成员名称=常量;/......
  • C++利用类和对象封装立方体面积和体积
    C++利用类和对象封装立方体面积和体积1、说明2、代码3、总结1、说明C++利用类和对象进行封装立方体的面积和体积,对学过的知识进行总结,本代码并非原创。2、代码#include<iostream>#include<time.h>#include<string.h>#include<ctime>usingnamespacestd;//立......
  • Java中的接口多继承详解
    Java中的接口多继承详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java中,类的多继承是不被允许的,但是接口的多继承却是被允许的。接口多继承可以使得类具备多种行为,并且解耦合代码,有助于提升代码的可维护性和可扩展性。本文将详细介绍Java中接口多......
  • 全网最适合入门的面向对象编程教程:16 类和对象的Python实现-多态、方法重写与开闭原则
    全网最适合入门的面向对象编程教程:16类和对象的Python实现-多态、方法重写与开闭原则摘要:本文主要介绍了Python中创建自定义类时子类如何实现对父类方法的重写、方法重写的定义和多态的基本概念,并对开闭原则进行介绍。原文链接:FreakStudio的博客往期推荐:学嵌入式的你,......
  • 【Qt Designer用Frame设置背景图片】不影响其它组件小技巧,控件层级设置,组件的继承
    QtDesigner用Frame设置背景图片、颜色不影响其它组件小技巧,控件层级设置,组件的继承在设置背景时,遇到一个问题,例如用frame当最后一层设置背景,加载资源图片后,会使frame内部组件继承相同格式,很麻烦。原语句用法border-image:url(:/images/login.png);内部组件会出现父......
  • 类的继承 虚函数 纯虚函数
    定义:classTIme:publicEnt//EntTime是Ent的子集继承Ent类的公开变量//Time可共享Ent,Ent不能共享Time类虚函数:功能:允许在子类中重写方法也就是本例子中的Time类中,在Ent类中重写virtual让它做其他事情例如:classEnt{public: virtualstd::s......
  • C++中的多态
    抽象类概念在虚函数的后面写上=0,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口类),抽象类不能实例化出对象。派生类继承后也不能实例化出对象,只有重写纯虚函数,派生类才能实例化出对象。纯虚函数规范了派生类必须重写,另外纯虚函数更体现出了接口继承。......
  • 封装 uniapp 请求库的最佳实践
    背景在前端开发中,HTTP请求是与服务器进行数据交互的核心手段。无论是获取数据还是提交数据,前端应用几乎都离不开HTTP请求。在uniapp中,uni.request是官方提供的用于发起HTTP请求的基础API。然而,直接使用uni.request存在一些问题和不足,比如:代码冗余:每次发起请求时都需......
  • Java三剑客:封装、继承、多态的魔法世界
    第一章:封装的艺术——保护你的宝藏案例分析:银行账户系统想象一下,你正在构建一个银行账户系统。每个账户都有一个余额,这个余额需要受到严格的保护,不能被随意修改。我们可以通过封装来实现这一目标。示例代码:publicclassBankAccount{privatedoublebalance;//......