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

内部类和Object类

内部类

内部类的分类:实例内部类、静态内部类局部内部类匿名内部类

1.1实例内部类

//外部类
public class OutClass1 {public int date;//实例内部类class Innerclass{public int ger;public void test(){System.out.println("test方法被执行了");}}public void func(){System.out.println("func方法被执行了");}
}

问:(1)如何实例化实例内部类对象

 OutClass1 outClass1=new OutClass1();OutClass1.Innerclass innerclass=outClass1.new Innerclass();

需要外部类对象的引用

(2)实例内部类是可以访问外部类的成员属性的,但当实例内部类和外部类的成员属性同名时,实例内部类会优先访问自己的。那么,如何访问外部类的成员属性呢

通过外部类名称.this.同名成员在实例内部类方法里访问外部类的成员属性

注:

1.外部类中的任何成员都可以在实例内部类方法中直接访问

2.实例内部类所处的位置与外部类成员位置相同,因此也受public、private等访问限定符的约束

3.实例内部类对象必须在先有外部类对象的前提下才能创建

4.实例内部类的非静态方法中包含了一个指向外部类对象的引用

5.外部类中,不能直接访问实例内部类中的成员,如果要访问必须要先创建内部类的对象

1.2静态内部类

实例化静态内部类

 OutClass1.Innerclass innerclass=new OutClass1.Innerclass();

注:1.静态内部类只能访问外部类当中的静态成员

2.

1.3局部内部类

局部内部类一般在方法中,只能在方法当中使用,并且不能被public等修饰

public class OuterClass2 {public int a;public void method(){class InnerClass{public int b=200;public void innerclassMethod(){System.out.println("内部类方法");}}InnerClass innerClass =new InnerClass();innerClass.innerclassMethod();}
}

1.4匿名内部类

匿名内部类通常用于创建只需要使用一次的类

public class Test1 {public void test(){System.out.println("test方法执行了");}public static void main(String[] args) {//相当于继承了Test1类new Test1(){@Overridepublic void test() {System.out.println("重写的test方法执行了");}}.test();}
}
interface HA{void test();
}
public class Test2 {public static void main(String[] args) {//相当于有一个类实现了HA接口new HA(){public int a;@Overridepublic void test() {System.out.println("重写了接口方法");}}.test();}
}

匿名内部类可以定义和正常类一样的变量但是和正常类一样不能直接包含执行语句

Object类

概述:Object类是Java默认提供的一个类,除了Object类之外其他所有的类都有继承关系

Object的方法:

1)toString方法

如果使用object提供的方法打印引用类型的就是"地址",重写Object提供的方法的话,就可以打印引用类型当中的内容,数据类型打印出来的都是它本身的值.

2)equals方法

在Java当中,如果基本数据类型变量,使用"=="比较变量的值是否相同.

如果引用类型变量,使用"=="比较就是他们的地址是否相同

那么,如果你想要比较对象当中的内容的值是否相同,就需要重写Object类当中的equals()方法.

问题来了,为什么要重写Object当中的这个方法呢?

da:因为Object类当中的equal方法就是比较的他们的地址所以要重写地址

public boolean equals(Object obj) {return (this == obj);}

3)hasCode方法

说白了就是确定两个对象的属性在内存当中的存储位置是否在同一个位置当中

package demo5;
import java.util.Objects;
class Student{public String name;public int a ;public Student(String name) {this.name = name;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", a=" + a +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return a == student.a && Objects.equals(name, student.name);}@Overridepublic int hashCode() {return Objects.hash(name, a);}
}
class Person{}
public class ObjectClass {
}
package demo5;public class Test6 {public static void main(String[] args) {Student student =new Student("张三");Student student2 =new Student("张三");Student student3 =new Student("张三");System.out.println(student.a);System.out.println(student);System.out.println(student2.equals(student3));System.out.println(student2.hashCode());System.out.println(student3.hashCode());System.out.println(student.hashCode());}
}

http://www.dtcms.com/a/554559.html

相关文章:

  • B049基于博途西门子1200PLC红绿灯控制系统仿真
  • 淘宝手机网站模板下载安装公司网站模板大全
  • 专属虚拟环境:Hugging Face数据集批量下载(无登录+国内加速)完整指南
  • 域名访问网站应该怎么做高端网站建设济南兴田德润简介电话
  • **新一代券商与机构专业交易系统开发:从国际金融变局到技术架构重构**
  • 最好网站建设公司哪家好阳泉集团网站建设
  • 电子商务网站怎么做素材包wordpress 浮窗
  • 海东企业网站建设公司南村网站建设
  • 宁波市高等级公路建设指挥部网站扁平化设计网站
  • e建网站网站设置访问权限
  • 查找(无序线性、有序线性、二分查找)
  • 不同规模企业如何选择与进化营销费用管理?
  • 备案期间网站中小企业
  • .gitignore配置了忽略dist文件夹,但是souretree还是跟踪了dist文件夹的变化怎么解决
  • 网站开发总出现出现404做网站有哪些技术
  • 突破协议壁垒:CCLINK转EtherNet/IP在大型温室罗克韦尔PLC伺服通讯中的实践
  • edu网站一般谁做的网站的seo怎么做
  • 手机触屏网站微信低代码开发平台
  • DAP-Seg:精准解码基因调控赋能科研发现---一种替代ChIP-seq的高效解决方案,让非模式植物研究不再受限
  • 台州临海市建设局网站天琥设计
  • Flink-2.0.0在配置文件中修改.pid文件存储位置及其他默认参数
  • 微擎怎么做网站网站建设中面包屑导航的特点
  • 做的网站 为什么百度搜不到科技类特长生有哪些项目
  • 网站架构图怎么做台州做网站seo的
  • 织梦cms网站建设建筑工程管理系统平台
  • 从真人动作到机器人执行:惯性动捕如何打通数据链路?
  • 重庆网站联盟wordpress装饰公司主题
  • 手机上可以做网站网站的服务器怎么做的
  • AI驱动的算力资产运营变革
  • 生态环境影响评价技术;生物多样性计算方法;生态脆弱度评价;生态保护措施;公路铁路类、机场建设类、水利类等项目生态环评