Java Day2 面向对象

这里写目录标题

  • 1、static总结
    • 1.1 代码块
      • 1.1.1 静态代码块
      • 1.1.2 实例代码块
      • 1.1.3 小例子
  • 2、继承
    • 2.1 权限修饰符
    • 2.2 方法重写
    • 2.3 子类访问成员特点
    • 2.4子类构造器的特点
  • 3、多态
  • 4、final、常量
    • 4.1 final
    • 4.2 常量
  • 5 抽象类
    • 5.1 概念
    • 5.2 模板设计方法
  • 6、接口
    • 6.1 接口新方法
    • 6.2 接口其他特性

1、static总结

1、static 可以用来修饰变量和方法 变为类变量或者类方法。
类变量和类方法 跟随类一起加载,由于类只被加载一次,所以类变量和类方法也只被加载一次。
2、类变量和类方法属于类本身,所有对象可共享,直接使用类名.类变量或者类方法名 就可以调用,也可以使用实例.来调用/
3、类方法只能访问类变量;
实例方法既可以访问实例变量也可以访问类变量;
实例方法允许使用this关键字,类方法不允许。
4、单例设计模式:
①设计模式是指解决一个问题的最优解
②单例设计模式 确保一个类只有一个对象 可以节约内存 比如任务管理器,运行时环境等,只有一个对象即可。
写法:
饿汉式单例:在拿对象时,对象就已经创建好了。

package com.cky.static_demo;

public class A {
    //2、创建一个私有的类对象
    private static A a=new A();
    //1.构造器私有
    private A(){
        
    }
    
    //3' 设计一个方法 返回类对象
    public A getA(){
        return a; //由于类对象 只加载一次 所以不论调用几次 都是一个对象
    }
}

懒汉式单例:在拿对象时,才创建对象

package com.cky.static_demo;

public class A {
    //2、创建一个类对象用来保存
    private static A a;
    //1.构造器私有
    private A(){

    }

    //3' 设计一个方法 返回类对象
    public A getA(){
        if(a==null){ //第一次
            a=new A();
        }
        return a; //由于类对象 只加载一次 所以不论调用几次 都是一个对象
    }
}

1.1 代码块

代码块分为静态代码块 和 实例代码块
代码块都在构造器之前运行。

1.1.1 静态代码块

写法:

static {}

特点:
由于类只会加载一次,所以类代码块也只会加载一次

作用:
用来完成对类的初始化 比如一些类变量 Socket 中就使用了静态代码块。

1.1.2 实例代码块

写法:
{}
特点:每次创建类对象时,都会被调用,且在构造器之前被调用

作用:
完成对类对象的初始化,例如对实例对象进行初始化赋值。

1.1.3 小例子

package com.cky.static_demo;

public class A {
    //静态代码块
    static {
        System.out.println("111");
    }
    //实例代码块
    {
        System.out.println("222");
    }
    
    //构造器
    public A(){
        System.out.println("333");
    }
}

package com.cky.static_demo;

public class Test {
    public static void main(String[] args) {
        A a = new A();
    }

}

结果
111
222
333

2、继承

java是单继承,但是可以多层继承。

2.1 权限修饰符

在这里插入图片描述

2.2 方法重写

在这里插入图片描述

2.3 子类访问成员特点

在这里插入图片描述

2.4子类构造器的特点

在调用子类构造器时,都会先调用父类构造器(可以不写,会自动在上边加super()。
但是如果父类构造器 写了一个有参数构造器,
①要么在子类中显示写出调用的父类有参构造器
②要么,在父类中在添上一个无参构造器.因为如果自己写了一个有参构造器,就不会自动生成无参构造器了。

this(…) 可以被用来调用本类中的其他构造器(兄弟构造器),但是要注意:this(…)和super(…)不能写在一起,因为如果调用了兄弟构造器,则最底层的兄弟构造器是会调用父类构造器的。
在这里插入图片描述

3、多态

多态 分为 对象多态(比如一个人 可以是老师 也可以是母亲等)和行为多态(对于跑这个动作,对于学生来说 可能跑的快 但是老师 可能就会跑得慢)

对于属性变量 没有多态一说
对于行为 编译看左边,执行看右边。
对于属性 编译看左边,执行看左边。

多态有一个缺点:
即无法执行子类自己独有的方法,编译不同过,此时我们需要进行强转。

package com.cky.dt;

public class Test {
    public static void main(String[] args) {
        People p=new Student();
        p.run();//编译看左边,执行看右边
        System.out.println(p.name);//编译看左边,执行看左边
        People p1=new Teacher();
        p1.run();
        System.out.println(p1.name);
        go(p);
        go(p1);
    }
  //强转 因为不强转无法执行 子类独有的功能(由于编译看左边
    public static void go(People p){
        if(p instanceof Student){
            Student s=(Student)p;
            s.learn();
    }
      else {
            Teacher t=(Teacher) p;
            t.teach();
        }
    }
}
class People{
    public String name="cui";
    public void run(){
        System.out.println("people run");
    }
}
class Student extends People{
    public String name="kai";
    public void run(){
        System.out.println("Student run");
    }
    public void learn(){
        System.out.println("Student learn");
    }

}
class Teacher extends People{
    public String name="yue";
    public void run(){
        System.out.println("Teacher run");
    }
    public void teach(){
        System.out.println("Teacher teach");
    }

}

结果:
Student run
cui
Teacher run
cui
Student learn
Teacher teach

4、final、常量

4.1 final

final 可以用来修饰类,方法和属性

修饰类即表示该类不能被继承或者实现了。
修饰方法,证明该方法不能被重写。
修饰变量,证明该变量只能被赋予一次值,不能二次赋值。
变量:局部变量和全局变量 全局变量又分为静态成员变量和实例成员变量。

final 修饰基本数据类型,即该值不能被二次修改。
final修饰引用数据类型是指其地址不能被修改,比如数组,但是我们还是可以修改其值的。

4.2 常量

java中的常量通常被 static final修饰
比如 public static final String ADDRESS="上海";
在编译时 直接就被宏替换了 而不用通过ADDRESS 再去找到"上海这个值",节约时间。

5 抽象类

5.1 概念

在这里插入图片描述

在这里插入图片描述

5.2 模板设计方法

在这里插入图片描述

6、接口

在这里插入图片描述

在这里插入图片描述
接口案例:
在这里插入图片描述
分析:
在这里我们首先可以先 定义一个学生类 用来保存学生的信息,之后定义一个班级类 用来保存所有学生信息以及进行一个操作,比如打印学生信息等等。
但是由于打印学生信息有两套方案,我们不能在一个里边完成,这时候就需要接口了,
定义一个接口类,里边有两个方法(抽象),接着用两个类去实现它,已完成不同的操作,最后在班级类里实例化该接口,如果用方案一就实例化方案一的类,以此类推。

6.1 接口新方法

在这里插入图片描述

6.2 接口其他特性

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/433601.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

openEuler学习——部署MGR集群

本文介绍如何利用GreatSQL 8.0.25构建一个三节点的MGR集群。 1.安装准备 IP端口角色192.168.20.1103306mgr1192.168.20.1113306mgr2192.168.20.1123306mgr3 配置hosts解析 [rootMGR1 ~]# cat >> /etc/hosts << EOF > 192.168.20.110 MGR1 > 192.168.20.1…

Qt QtCreator打开pro项目时出现假死现象

在Windows系统下&#xff0c;QtCreator打开pro项目时出现假死现象&#xff0c;左侧项目树形图无法展开&#xff0c;项目根节点一直在转圈。尝试关掉所有QtCreator进程&#xff0c;重新打开pro也是无济于事。 解决方案&#xff1a; 打开“运行”窗口&#xff08;快捷键&#x…

overleaf latex 笔记

overleaf: www.overleaf.com 导入.tex文件 1.代码空一行&#xff0c;代表文字另起一段 2. 1 2 3 排序 \begin{enumerate} \item \item \item \end{enumerate} 3.插入图片 上传图片并命名 \usepackage{float}导包\begin{figure}[H]&#xff1a;表示将图…

鸿蒙开发报错解决方案: cannot be smaller than version 10 declared in library [:library]

由于报错信息不详&#xff0c;即使给hvigor.js 提供--stacktrace 级别的日志也无法定位具体模块。 解决方案&#xff1a;修改编译源码js。 1、定位具体js&#xff1a;我的定位是&#xff1a;/Users/xdg/.hvigor/project_caches/489b334bc29a5a8428674c766cdae532/workspace…

智能边缘计算网关实现工业自动化与数据处理的融合-天拓四方

随着物联网&#xff08;IoT&#xff09;技术的迅速发展和普及&#xff0c;越来越多的设备被连接到互联网上&#xff0c;产生了海量的数据。如何有效地处理和分析这些数据&#xff0c;同时确保数据的安全性和实时性&#xff0c;成为了摆在企业面前的一大挑战。智能边缘计算网关作…

图像处理与视觉感知---期末复习重点(1)

文章目录 一、概述二、图像处理基础2.1 视觉感知要素2.2 像素间的一些基本关系2.2.1 相邻像素2.2.2 连通性2.2.3 距离度量 2.3 基本坐标变换2.4 空间变换与灰度值 一、概述 1. 图像的概念及分类。  图像是用各种观测系统以不同形式和手段观测客观世界而获得的、可以直接或间接…

百度AI已经实现盈利,普通人如何通过AI短视频直播拿到结果?

从百度最新的财报数据来看&#xff0c;百度AI为广告业务、智能云业务带来了增长动力。除了直接带来商业收入&#xff0c;AI还为百度带来了新增长。2023年&#xff0c;百度用户总数、用户时长及用户粘性、付费率等都有所增加。数据显示&#xff0c;2023年12月&#xff0c;百度Ap…

刚刚,OpenAI官方发文驳斥马斯克,自曝8年间邮件往来截图

文章开篇表示&#xff1a;「OpenAI 的使命是确保 AGI 惠及全人类&#xff0c;这意味着既要构建安全、有益的 AGI&#xff0c;又要帮助创造广泛的利益。我们正在分享我们在实现使命方面所学到的知识&#xff0c;以及有关我们与马斯克关系的一些事实。我们打算驳回马斯克的所有主…

Spring事务管理与模板对象

1.事务管理 1.事务回顾 事务指数据库中多个操作合并在一起形成的操作序列 事务的作用 当数据库操作序列中个别操作失败时&#xff0c;提供一种方式使数据库状态恢复到正常状态&#xff08;A&#xff09;&#xff0c;保障数据库即使在异常状态下仍能保持数据一致性&#xff…

Netty权威指南——基础篇5 IO基础 备份

1 什么是I/O 在UNIX世界里一切皆是文件&#xff0c;而文件是什么&#xff1f;文件就是一串二进制流而已&#xff0c;其实不管是Socket&#xff0c;还是FIFO&#xff08;先进先出队列&#xff09;、管道、终端。对计算机来说&#xff0c;一切都是文件&#xff0c;一切都是流。在…

JSP实现数据传递与保存

1.HTML页面转换JSP页面 直接再HTML页面最顶端添加page指令&#xff0c;修改文件后缀名&#xff1b;反之&#xff1b; 2.JSP内置对象 对象 描述 request 每当客户端请求JSP页面时&#xff0c;JSP引擎会制造一个新的request对象来代表这个请求。 response 当服务器创建req…

内存溢出(OOM)-汇总指南

目录 java.lang.OutOfMemoryError:Java heap space 原因分析 示例 解决方案 java.lang.OutOfMemoryError:GC overhead limit exceeded 原因分析 示例 解决方案 java.lang.OutOfMemoryError:Permgen space 原因分析 示例 解决方案 java.lang.OutOfMemoryError:Metas…

Learn C the hard way :一些简单问题处理

Preface&#xff1a;本次学习主要是以复习态度而来&#xff0c;意在加强C语言的理解&#xff0c;本文主要针对于网站中出现的一些问题 我的简单Makefile&#xff1a; CFLAGS-Wall cc gcc cflag -Wall -g allfiles ex1.c ex2.c ex3.c ex4.c ex5.c ex4-1.c objs $(allfiles:.c…

Claude 3击败GPT-4,地表最强AI易主,坐等翻车

北京时间3月4日晚22点00分&#xff0c;Claude 3发布了&#xff0c;一举超越了GPT-4&#xff01; 震惊&#xff0c;居然有人能超越霸主地位&#xff0c;赶紧进官网详细的看一下&#xff1a; https://www.anthropic.com/news/claude-3-family 刷到第一的成绩单 Claude3 Opus的…

MyBatis操作数据库(SQL注入)

本文主要来讲解6大标签&#xff0c;以便更好的MyBatis操作数据库&#xff01; <if>标签<trim>标签<where>标签<set>标签<foreach>标签<include>标签 前提需求&#xff1a; MyBatis是一个持久层框架&#xff0c;和Spring没有任何关系&…

java VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城 小程序商城搭建

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

Nodejs 第五十章(lua的基本使用)

lua基本使用 全局变量局部变量 全局变量是在全局作用域中定义的变量&#xff0c;可以在脚本的任何地方访问。全局变量在定义时不需要使用关键字&#xff0c;直接赋值即可。 xiaoman xmzsprint(xiaoman)局部变量是在特定作用域内定义的变量&#xff0c;只能在其所属的作用域…

腾讯云4核8G12M轻量服务器优惠价格446元一年,646元15个月

腾讯云4核8G12M轻量服务器优惠价格446元一年&#xff0c;646元15个月&#xff0c;180GB SSD云硬盘&#xff0c;2000GB月流量。 一张表看懂腾讯云服务器租用优惠价格表&#xff0c;一目了然&#xff0c;腾讯云服务器分为轻量应用服务器和云服务器CVM&#xff0c;CPU内存配置从2核…

【笔记】Android ServiceStateTracker 网络状态变化逻辑及SPN更新影响

业务简介 在网络状态变化的时候&#xff08;数据或WiFi&#xff09;&#xff0c;会更新SPN。 基于Android U的代码分析。 分类&#xff1a;SPN Data_Dic-的博客-CSDN博客 功能逻辑 状态说明 飞行模式下注册上WFC的话&#xff0c;注册状态MD上报 regState: NOT_REG_MT_NOT…

SpringBoot 自定义映射规则resultMap collection一对多

介绍 collection是封装一对多关系的&#xff0c;通常情况下是一个列表&#xff0c;association是一对一&#xff0c;通常情况是一个对象。例如&#xff1a;查询班级下所有的学生&#xff0c;一个班级可以有多个学生&#xff0c;这就是一对多。 案例 有一个学生表&#xff0c…