首页 > 编程语言 >Day06-面向对象编程

Day06-面向对象编程

时间:2023-06-02 11:55:05浏览次数:44  
标签:静态方法 子类 Day06 面向对象编程 test new 父类 public

面向对象编程(OOP)

面向对象编程的本质:以类的方式组织代码,以对象的形式组织(封装)数据

抽象

三大特性

  • 封装

  • 继承

  • 多态

非静态方法之间可以互相调用不用new对象,但是在静态方法里面无法直接调用非静态方法,原因是静态方法是和类一起加载的,非静态方法是在类实例化之后才存在的,相当于一个已经存在的方法调还没存在的方法

构造器

  1. 没有返回值,必须和类名相同

  2. 使用new关键字,本质是在调用构造器

  3. 用来初始化值

  4. 一旦定义了有参构造,想使用无参构造,就必须显示定义一个无参构造

  5. this. 代表当前类的....

类与对象

  1. 类与对象:

    • 类是一个模版:抽象,对象是一个具体的实例

  2. 方法

    • 定义、调用

  3. 对应的引用

    • 引用类型 : 基本类型(8)

    • 对象是通过引用来操作的,栈-->堆

  4. 属性:字段field 成员变量

    默认初始化

    • 数字:0,0.0

    • char:u0000

    • boolean:false

    • 引用:null

    修饰符 属性类型 属性名=属性值!

  5. 对象的创建和使用

    • 必须使用new 关键字创造对象,构造器 Person wenji=new Person()

    • 对象的属性 wenji.name()

    • 对象的方法 wenji.sleep()

    • 静态的属性 属性

    • 动态的行为 方法

封装

高内聚、低耦合

属性私有:get/set

继承

  1. 子类继承父类,就会拥有父类的全部方法

  2. 变量的修饰符:public、protect、default、private

  3. 在java中所有的类都直接或间接继承object

  4. java中只有单继承,没有多继承

  5. 私有的东西无法被继承

  6. 调用父类的构造器,必须要在子类构造器的第一行

super

  • super调用父类的构造方法,必须在构造方法的第一个

  • super必须只能出现在子类的方法或者构造方法中

  • super和this不能同时调用构造方法

this和super的区别

代表的事物不同

  • this:本身调用者这个对象

  • super:代表父类对象的应用

前提

  • this在没有继承也可以使用

  • super只能在继承条件下才可以使用

构造方法

  • this():本类的构造

  • super():父类的构造

方法重写

重写都是方法的重写,和属性无关

  • 需要有继承关系,子类重写父类的方法

  • 参数列表必须相同

  • 修饰符:范围可以扩大:public>protect>default(默认)>private 比如父类是protected,子类可以是protected,public

  • 抛出的异常:范围,可以被缩小,但不能扩大:ClassNotFoundException--》Exception(大)

重写,子类的方法必须和父类一致,方法体不同

//静态方法
public class A extend B{
 @Override
 public static void test(){
   System.out.println("A->test");
}
}

public class B{
 public static void test(){
System.out.println("B->test");
}
}

public class C{
 public static void main(String[] args){
   A a=new A();
   a.test();
   B b=new A();
}
}

//非静态方法
public class A extend B{
 @Override
 public void test(){
   System.out.println("A->test");
}
}

public class B{
 public void test(){
System.out.println("B->test");
}
}

public class C{
 public static void main(String[] args){
   A a=new A();
   a.test();
   B b=new A();
}
}

静态方法和非静态方法调用区别很大

  • 静态方法:方法调用只和左边定义的数据类型有关,类的方法

  • 非静态方法:重写,调用的是对象的方法,对象是用子类new出来的,对象的方法

静态方法只能被继承不能被重写

多态

  • 一个类的实际类型是确定的,但是可以指向的引用类型就不确定了,父类的引用指向子类

Student s1=new Student();
Person s2=new Student();
Object s3=new Student();

注意事项

  1. 多态是方法的多态,属性没有多态

  2. 父类和子类,有联系,类型转换异常!ClassCastException

  3. 存在条件:继承关系方法, 需要重写,父类引用指向子类对象

  • static 方法,属于类,它不属于实例

  • final 常量

  • private 方法

  1. 把父类转换为子类,向下转型,强制转换

  2. 方便方法的调用,减少重复的代码,简洁

标签:静态方法,子类,Day06,面向对象编程,test,new,父类,public
From: https://www.cnblogs.com/happyQueen/p/17451344.html

相关文章

  • < Python全景系列-6 > 掌握Python面向对象编程的关键:深度探索类与对象
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。Python全景系列的第六篇,本文将深入探讨Python......
  • 面向对象编程OOP
    面向对象编程OOP面向过程思想步骤清晰简单,第一步作什么,第二步做什么....面对过程适合处理一些较为简单的问题。面向对象思想物以类聚,分类是思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。面向对象适......
  • 从C到C++:学习C++的高级语法、STL和面向对象编程
    好的,那我为您写一篇有关C++编程的文章,详情如下。标题:从C到C++:学习C++的高级语法、STL和面向对象编程开头:C++语言是对C语言的扩展,是一种面向对象的程序设计语言。它具有丰富的数据类型、函数模板、类模板、标准模板库等高级特性。掌握高级语法、STL和面向对象编程,可以使程序员更加高......
  • LabVIEW 面向对象编程(oop)-简单工厂模式程序Demo,基于Modbus的RS485通讯,程序Demo已经
    LabVIEW面向对象编程(oop)-简单工厂模式程序Demo,基于Modbus的RS485通讯,程序Demo已经过初步验证测试效果良好,整体操作过程已录制视频(视频时长40分钟),手把手进行讲解简单工厂模式的注意点和编写步骤,手把手教你创建一个简单工厂模式。ID:7156622766004941......
  • JavaScript 面向对象编程
    面向对象编程ObjectOrientedProgramming面向对象编程用对象把数据和方法聚合起来。面向对象编程的优点能写出模块化的代码能使得代码更灵活能提高代码的可重用性面向对象编程的原则继承(inheritance):子类/派生类从父类/基类/超类中派生,形成继承结构封装(encapsulati......
  • CPT204面向对象编程指南
    AdvancedObject-OrientedProgrammingCPT204–FinalProjectCPT204AdvancedObject-OrientedProgrammingFinalProjectTaskSheet2–SupplementaryCPT204-2223FinalProjectTaskSheet2–SupplementaryInfo●Thisdocumentcontainssupplementaryinformationon......
  • 面向对象编程
    对象的概念”面向对象“的核心是“对象”二字,而对象的精髓在于“整合“,什么意思?所有的程序都是由”数据”与“功能“组成,因而编写程序的本质就是定义出一系列的数据,然后定义出一系列的功能来对数据进行操作。在学习”对象“之前,程序中的数据与功能是分离开的,如下#数据:name、ag......
  • C++虚函数详解:多态性实现原理及其在面向对象编程中的应用
    在面向对象的编程中,多态性是一个非常重要的概念。多态性意味着在不同的上下文中使用同一对象时,可以产生不同的行为。C++是一种面向对象的编程语言,在C++中,虚函数是实现多态性的关键什么是虚函数虚函数是一个在基类中声明的函数,它可以被子类重写并提供不同的实现。在C++中,使用关......
  • 01_java面向对象编程语言的思考
    java的跨平台在各个操作平台上,有一层JVM(java虚拟机),这是支撑java程序能够运行的基础。java源代码→(编译)→java字节码→(运行)→java虚拟机jdk:java开发工具包jre:java运行环境jvm:java虚拟机api:应用程序接口程序目录主要结构lib目录:存放Java的类库文件bin:java编译器,解释器工具......
  • day06-优惠券秒杀02
    功能03-优惠券秒杀024.功能03-优惠券秒杀4.4一人一单4.4.1需求分析要求:修改秒杀业务,要求同一个优惠券,一个用户只能下一单。在之前的做法中,加入一个对用户id和优惠券id的判断,如果在优惠券下单表中已经存在,则表示该用户对于这张优惠券已经下过单了,不允许重复购买4.4.2代码实......