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 接口其他特性

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud 面试题及答案整理,最新面试题

Spring Cloud中断路器的原理及其作用是什么? Spring Cloud断路器的原理和作用基于以下几个关键点: 1、故障隔离机制: 在微服务架构中,断路器作为一种故障隔离机制,当某个服务实例出现问题时,断路器会“断…

动静态库-动态库加载

动静态库 前言引入 一、静态库1. 创建静态库①原理②创建 2. 使用静态库①借助编译选项②只需要带库名 3. 小结 二、动态库1. 创建动态库2. 使用动态库 三、 动态库加载原理——进程地址空间1. 地址①程序没有被加载前的地址②程序加载后的地址 2. 原理①动态库的地址②原理 前…

【AI视野·今日CV 计算机视觉论文速览 第301期】Mon, 4 Mar 2024

AI视野今日CS.CV 计算机视觉论文速览 Mon, 4 Mar 2024 Totally 74 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Point Could Mamba: Point Cloud Learning via State Space Model Authors Tao Zhang, Xiangtai Li, Haobo Yuan, Shunping …

Python从0到100(二):Python语言介绍及第一个Pyhon程序

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

VELO Angel Glide骑行如风,为你的骑行生活添上一抹亮色~

骑行美学,不就是骑得飞快,姿势还帅吗?但别忘了头盔和护膝,还有多数人忽视的骑行坐垫——毕竟安全骑行才是真的美哦。    我曾经一直苦恼于骑行过程中坐垫为你带来的不适感,也曾萌生退意,直到我遇见了这…

基于springboot+vue的图书管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

JavaScript的`bind`方法:函数的“复制”与“定制”

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

SPC 之 I-MR 控制图

概述 1924 年,美国的休哈特博士应用统计数学理论将 3Sigma 原理运用于生产过程中,并发表了 著名的“控制图法”,对产品特性和过程变量进行控制,开启了统计过程控制新时代。 什么是控制图 控制图指示过程何时不受控制&#xff…

java spring 03 启动细节

spring启动类ClassPathXmlApplicationContext,读取xml文件并且创建bean public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, Nullable ApplicationContext parent)throws BeansException {super(parent);setConfigLocations(confi…

数据分析-Pandas数据y轴双坐标设置

数据分析-Pandas数据y轴双坐标设置 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&…

【笔记】Android 漫游定制SPN定制有关字段

一、SPN模块简介 【笔记】SPN和PLMN 运营商网络名称显示 Android U 配置 WiFiCalling 场景下PLMN/SPN 显示的代码逻辑介绍 【笔记】Android Telephony 漫游SPN显示定制(Roaming Alpha Tag) 二、相关配置字段 non_roaming_operator_string_array 是否…

RHCSA练习2

一、实验题目 1、文件查找 (1)在当前目录及子目录中,查找小写字母开头的txt文件 [rootroot ~]# cd /etc [rootroot etc]# find . -type f -name [a-z]*.txt (2)在/etc及其子目录中,查找host开头的文件 …