首页 > 编程语言 >Java基础Day6-面向对象

Java基础Day6-面向对象

时间:2022-11-03 10:35:01浏览次数:63  
标签:调用 Java 构造方法 Day6 子类 面向对象 对象 父类 方法

一、面向对象编程(Object-Oriented Programming, OOP)

  • 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据。
  • 从认识论的角度:先有对象后有类。对象是具体的事物,类是对对象的抽象。
  • 从代码运行的角度,先有类,再有对象。类是对象的模板。

二、创建与初始化对象

  • 使用new关键字创建对象
  • 使用new关键字创建的时候,除了分配内存空间以外,还会给创建好的对象进行默认的初始化以及对类中构造器的调用

三、构造器

  • 类中的构造器也称为构造方法,是进行创建对象的时候必须要调用的。
  • 特点:① 和类名相同;② 没有返回值,也不能写void;
  • 作用:① new本质在调用构造方法;② 初始化对象的值;
  • 注意点:一旦定义了有参构造,无参就必须显示定义。

四、创建对象内存分析

这篇博客讲得很详细。
https://blog.csdn.net/cccccccmmm/article/details/125940147

五、三大特性:封装、继承、多态

封装

  • 程序追求“高内聚,低耦合”;
  • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
  • 低耦合:仅暴露少量的方法给外部使用;
  • 属性私有,get、set方法;
  • 关键词:private;

继承

  • 继承的本质是对某一批类的抽象;
  • extends的意思是“拓展”,子类是父类的拓展;
  • Java中类只有单继承,没有多继承;
  • 继承是类和类之间的一种关系,除此之外,类和类之间的关系还有依赖、组合、聚合等;
  • 继承关系可以分成两个类,一个是子类(派生类),一个是父类(基类)。
  • 四个修饰符:public/protected/default/private;
  • private 私有的东西无法被继承;
  • 在Java中,所有的类都默认继承Object类;

super

  • super是调用父类的构造方法,必须在构造方法的第一个;
  • super必须只能出现在子类的方法或者构造方法中;
  • super和this不能同时调用构造方法;

方法重写

  • 方法重写的作用与相关解释:
    http://c.biancheng.net/view/1000.html
  • 老师在课堂上举的例子的原因:
    静态方法是类的方法,而非静态方法是对象的方法;
    有static时,b调用了B类的方法,因为b是用B类方法定义的;
    没有static时,b调用的是对象的方法,而b是用A类new的,即B是A new出来的对象,因此调用了A的方法。
  • 什么情况下能进行方法重写?
  1. 有继承关系,子类重写父类的方法;
  2. 方法名必须相同,参数列表必须相同;
  3. 修饰符:范围可以扩大但不能缩小;public>protected>default>private
  4. 抛出的异常:范围可以被缩小,但不能扩大;ClassNotFoundException-->Exception

多态

同一个方法可以根据发送对象的不同而采用多种不同的行为方式。
子类能调用的方法都是自己的或者继承父类的;
父类可以指向子类,但是不能调用子类独有的方法;

instanceof

判断一个对象是什么类型。

类型转换

低转高可以自动转换,子类转换成父类;
高转低需要强制类型转换,父类转换成子类,(转换后的类型).变量名;

标签:调用,Java,构造方法,Day6,子类,面向对象,对象,父类,方法
From: https://www.cnblogs.com/yeyutian/p/16740412.html

相关文章

  • springboot javax.servlet.Filter使用
    请求拦截器优点:1、拦截非法请求重定向2、验证用户token下面是demo程序,有问题的可以在评论区留言@WebFilter(filterName="authenticationFilter",urlPatterns={"/user/*......
  • 用 java 简单实现 rpc 通信
    代码不一定能够运行起来,这是在之前的代码中抽象出来的。这里只是说说基本的思路定义消息:packagecom.xiaoyao.game.net.framework.codec;importcom.google.protobuf.Messa......
  • 力扣1668(java&python)-最大重复子字符串(简单)
    题目:给你一个字符串 sequence ,如果字符串word 连续重复 k 次形成的字符串是 sequence 的一个子字符串,那么单词 word的重复值为k。单词word 的最大重复值......
  • Java高级架构师-Java基础(集合)
    Java高级架构师-Java基础(集合)集合框架Java.util.CollectionCollection接口中的共性功能1.添加boobleanadd(Objectobj);往该集合中添加元素,一次添加一个bo......
  • Java中“成员变量,局部变量,静态变量”三者区别说明
    转自:http://java265.com/JavaCourse/202111/1728.html下文笔者讲述java中成员变量,局部变量,静态变量的不同之处,如下所示: 成员变量局部变量静态变量定义位置......
  • java命令行如何编译运行带package(包)的程序
    先用javac编译,带参数-djavac-d.****.java 然后,在当前目录下(不要到****子目录),运行java即可。java***.*****如:javac-d.FuctionDemo2.javajavacom.Fuct......
  • 开发语言介绍——Java
    开发语言介绍——Java一、基本说明1.Java语法的特点关键字都是小写字母标识符没有长度限制使用Unicode编码Java是一种强类型的语言,变量在编译之前一定要被显示的声明......
  • 如何从 Java 的 List 中删除第一个元素 remove
    如何从Java的List中删除第一个元素remove概述在这个实例中,我们将会演示如何删除在Java中定义的List的第1个元素。我们将会针对这个问题使用List接口的......
  • Java获取当前环境
    配置环境spring.profiles.active=dev获取当前环境方法一通过@Value注解获取@Value("${spring.profiles.active}")privateStringenv;方法二在配置文件中通过env......
  • Java函数式编程(1):Lambda表达式(1)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ Java在其技术发展周期中经历过几次比较重要的变化,如果不是这几次比较重要的变化,恐怕不会有现在这样的江湖地位。个人看......