当前位置: 首页 > news >正文

(1-4)Java Object类、Final、注解、设计模式、抽象类、接口、内部类

目录

1. Object类

 1.1 equals

1.2 toString()

2.final关键字

3.注解

4. 设计模式

 4.1 单例模式

4.1.1 饿汉式

4.1.3 饿汉式 VS 懒汉式

5. 抽象类&抽象方法

6. 接口


1. Object类

 1.1 equals

重写Object 的equals方法,两种实现方式

 

1.2 toString()

 

2.final关键字

 

 

3.注解

4. 设计模式

设计模式是基于场景的解决方案

 4.1 单例模式

 

4.1.1 饿汉式

代码实现:

package org.example;/***   01   饿汉式 : 创建对象实例的时候直接初始化**   典型的空间换时间,类加载的的时候  ==>静态实例对象完成初始化操作*/
public class SingletonOne {// 1. 创建类中的私有构造private SingletonOne(){}// 2. 创建改类型的私有静态实例   (创建并实例化)private static SingletonOne instance = new SingletonOne();// 3. 创建公有静态方法返回静态实例对象public static SingletonOne getInstance(){return instance;}
}

测试结果:

import org.example.SingletonOne;public class test {public static void main(String[] args) {
//        SingletonOne one = new SingletonOne();SingletonOne one = SingletonOne.getInstance();SingletonOne two = SingletonOne.getInstance();System.out.println(one);  //org.example.SingletonOne@4554617cSystem.out.println(two);  //org.example.SingletonOne@4554617cSystem.out.println(one == two);      //trueSystem.out.println(one.equals(two));   //true}
}

4.1.2 懒汉式

package org.example;/*** 02 懒汉式** 类内实例对象创建时并不初始化,直到第一次调用get方法时,才完成初始化操作* 用时间换取空间的一种编码模式*/
public class SingletonTwo {// 01 创建私有构造方法private SingletonTwo(){}// 02 创建开放的静态方法提供实例对象public static SingletonTwo instance = null;// 03. 创建开放的实例方法提供实例对象public static SingletonTwo getInstance(){if(instance == null){instance = new SingletonTwo();}return instance;}
}

测试

import org.example.SingletonOne;
import org.example.SingletonTwo;public class test {public static void main(String[] args) {System.out.println("=====================");SingletonTwo one1 = SingletonTwo.getInstance();SingletonTwo two1 = SingletonTwo.getInstance();System.out.println(one1);   //org.example.SingletonTwo@74a14482System.out.println(two1);   //org.example.SingletonTwo@74a14482System.out.println(one1 == two1);  //true}
}
4.1.3 饿汉式 VS 懒汉式

5. 抽象类&抽象方法

/*** 抽象类: 这个类不允许被实例化了,可以通过向上转型,转向子类实例*/
public abstract class Animal {
//    public void eat(){
//        System.out.println("动物都需要吃东西");
//    }// 抽象方法没有方法体// 子类继承父类也必须重写父类的抽象方法,否则也需要将子类定义为抽象类// static、final、private   不能与abstract并存public abstract void eat();
}

6. 接口

定义接口

public interface INet {/*** 接口中抽象方法可以不写abstract关键字** 默认访问修饰符 public** ==> 当类实现接口时,需要实现接口中的所有抽象方法,否则需要将该类设置为抽象类*/void network();// 接口中可以包含常量, 默认public、 static、 finalint TEMP = 20;// default:默认方法 可以带方法体         jdk1.8后新增的// 可以在实现类中重写,并可以通过接口的引用调用default void connection(){System.out.println("我是接口中的默认链接");}//静态方法也可以待方法体                 jdk1.8后新增的// 不可以在实现类中重写, 可以通过接口名调用static void stop(){System.out.println("我是接口中的静态方法");}
}

实现接口

package com.vb.tel;public class SmartPhoto implements INet{
//    public static final int TEMP = 30;public int TEMP = 30;public void call(){System.out.println("Calling SmartPhoto");}public void network(){System.out.println("Networking SmartPhoto");}@Overridepublic void connection() {//调用接口中的默认方法INet.super.connection();System.out.println("Connection SmartPhoto");}
}

测试类

public class PhoneTest {public static void main(String[] args) {FourthPhone phone4 = new FourthPhone();phone4.game();            //可以玩游戏phone4.getBrand();phone4.call();            //手机可以拨打电话System.out.println("================");IPhoto ip = new FourthPhone();ip.photo();                     //拍照ip = new Camera();ip.photo();                   //相机可以拍照System.out.println("================");System.out.println(INet.TEMP);   //20INet net = new SmartPhoto();System.out.println(net.TEMP);    //20net.connection();//我是接口中的默认链接//Connection SmartPhoto// 接口中的静态方法需要通过接口名来调用INet.stop();               //我是接口中的静态方法}
}

7.内部类 

7.1 成员内部类

        内部类中最常见的,也称为普通内部类

内部类

package com.vb.people;// 外部类
public class Person {public int age;public void eat(){System.out.println("People eat");}// 获取内部类的方法public Heart getHeart(){new Heart().temp = 25;return new Heart();}//成员内部类/*** 1. 内部类在外部使用时,无法直接实例化* 选哟借助外部类信息才能完成实例化* 2. 内部类可以直接方法外部类的成员;如果出现同名属性,优先访问内部类中定义的* 3. 可以通过使用外部类.this.成员的方式,访问外部类中同名的信息* 4. 外部类访问内部类的信息,需要通过内部类实例,无法直接方问* 5. 内部类编译后.class文件明明: 外部类$内部类.class*///注: 不加public的话只能在同胞中调用public class Heart {int age = 13;int temp = 22;public String beat(){eat();return Person.this.age+"心脏在跳动";}}
}

测试类

package com.vb.people;public class PeopleTest {public static void main(String[] args) {Person vb = new Person();vb.age = 25;// 同包下访问内部类
//        Heart heart = new Heart();    //不可行//获取内部类对象实例:  ==>//方式1:  ==> new 外部类.new 内部类Person.Heart myHeart = new Person().new Heart();System.out.println(myHeart.beat());   //0心脏在跳动// 方式2: 通过外部类对象获取内部类实例   ==> 外部类对象.new 内部类Person.Heart heart1 = vb.new Heart();System.out.println(heart1.beat());    //25心脏在跳动// 方式3: 通过外部类对象 获取方法   ==> 外部类对象.获取方法heart1 = vb.getHeart();System.out.println(heart1.beat());    //25心脏在跳动}
}

http://www.xdnf.cn/news/444853.html

相关文章:

  • Doris与ClickHouse深度比较
  • 语音合成之十四 文本转语音(TTS)开源数据集
  • 互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-6
  • 使用IDEA创建Maven版本的web项目以及lombok的使用
  • 玛哈特矫平机:金属板材加工中的“平整大师”
  • 解读RTOS 第七篇 · 驱动框架与中间件集成
  • Milvus 全面解析
  • 非异步信号安全函数
  • The 2022 ICPC Asia Xian Regional Contest(E,L)题解
  • 5 WPF中的application对象介绍
  • DHCP协议
  • 每日算法-250514
  • Untiy基础学习(十四)核心系统—物理系统之碰撞检测代码篇 刚体,碰撞体,材质
  • 网络运维过程中的常用命令
  • idea中编写spark程序
  • 通过迁移学习改进深度学习模型
  • Python Day25 学习
  • MCU裸机程序如何移植到RTOS?
  • MySQL 入门大全:数据类型
  • 【漫话机器学习系列】258.拐点(Inflection Point)
  • C++中如何实现一个单例模式?
  • Spring Cloud:构建云原生微服务架构的最佳工具和实践
  • 机密虚拟机的威胁模型
  • 仓配一体化系统如何选择,ERP、OMS、WMS 功能解析与搭配策略
  • 生成对抗网络(Generative Adversarial Networks ,GAN)
  • 仿生眼机器人(人脸跟踪版)系列之一
  • 2025tg最新免费社工库机器人
  • Kotlin Multiplatform与Flutter、Compose共存:构建高效跨平台应用的完整指南
  • 【kafka】kafka概念,使用技巧go示例
  • Daily AI 20250514 (迁移学习与元学习)