object类和内部类
1.Object
object类是所有类的根类(父类)。
如果一个类没有显示继承另外一个类,那么该类一定继承于object类。
toString()返回对象字符串的的形式。
public class Test01 {
public static void main(String[] args) {
Object obj = new Object();
// 输出对象时,默认调用toString方法
System.out.println(obj);
// 类型@内存地址
System.out.println(obj.toString());
Student s1 = new Student("二狗",);
System.out.println(s1);
}
}
可以通过代码生成器快速生成toString方法。

equals(object obj)用于判断两个对象是否相等。
==比较两个对象的内存地址或基本数据类型的或char类型比较,object默认equals实现比较内存地址。
equals:用于比较两个对象的内容(属性)是否相等。
当自定义对象时,要比较自定义对象是否相等,就必须通过equals方法比较两个对象属性值是否相等,那就必须重写Object的equals方法
public boolean equals(Object obj) {
if(this == obj) {
return true;
}
Student s = (Student) obj;
if(this.sid.equals(s.sid) && this.name.equals(s.name) && this.age == s.age) {
return true;
}else {
return false;
}
}

2.内部类
在java中,一个文件可以定义多个类,但是文件名必须和public类型的类的类名保持一致。
这两个类是平行关系。
在java中,一个类也可以定义在一个类的内部,顾名思义定义在内部的类称为内部类(inter class),定义在外部的类称为外部类(out class)。
形如:
public class Outer {
[修饰符] class Inner{
}
}
编译后的结果

内部类根据具体的修饰符和具体位置分为很多情况。
2.1成员内部类
一个内部类作为一个外部类的成员而存在,此时该内部类称为外部类的成员内部类。
public class Outer {
class Inner{
}
}
一般而言,内部类都用默认修饰符。
【1】内部类如何创建对象
public class Test01 {
public static void main(String[] args) {
// 【1】创建外部类对象
Outer ot = new Outer;
// 【2】创建内部类对象
Inter it = ot.new Inter;
it.showInfo;
}
}
【2】内部类可以访问外部类的私有变量。
public class Outer {
private String name = "Outer";
class Inner{
public void showInfo() {
System.out.println(name);
}
}
}
【3】特殊情况内部类与外部类同名。
class Inner{
private String name = "Inner";
public void showInfo() {
// String name = "show info";
// 访问外部类的私有成员
System.out.println(this.name);
// 访问外部类的私有成员
System.out.println(Outer.this.name);
}
}
}
静态内部类
如果一个内部类被static 修饰,我们称为这个类为静态内部类。形式
public class Outer {
static class Inter{
}
}
【1】静态内部类创建对象
public class Test01 {
public static void main(String[] args) {
// 【1】创建外部类对象
Outer outer = new Outer();
// 【2】创建内部类对象
Inner inner = outer.new Inner();
inner.showInfo();
}
}
【2】内部类中可以访问外部类的私有变量
public class Outer {
private String name = "Outer";
class Inner{
public void showInfo() {
System.out.println(name);
}
}
}
【3】静态内部类可以访问外部类的(私有)静态成员
特殊情况:避免发生
public class Outer {
private static String name = "Outer";
static class Inner{
private static String name = "Outer";
public void showInfo() {
System.out.println("showInfo");
System.out.println(name);
System.out.println(Outer.name);
}
}
}
方法内部类
如果一个内部类定义到一个方法中,我们称为方法内部类
public class Outer {
private static int a = ;
public void print() {
int b = ;
class Inner {
public void showInfo() {
System.out.println(b);
}
}
Inner inner = new Inner();
inner.showInfo();
}
}
【2】方法的局部变量进入方法内部类时,被加上final 修饰。出了方法内部类之后,final被去掉
public class Outer {
public void print(int b) {
int a = ;
class Inner{
public void showInfo() {
System.out.println("show info");
System.out.println("print()->a:"+);
// 在方法内部类中不能修改方法的局部变量(final)
// a = 20;
// b = 20;
}
}
a = ;
Inner inner = new Inner();
inner.showInfo();
}
}
匿名内部类
未来一个类如果只使用一次,我们可以把类声明为匿名类。匿名类一般和内部类结合使用,形成匿名内部类
匿名内部类一定要存在:实现接口
object类和内部类的更多相关文章
- Object类、包装类、内部类详解
1.Object类 1.概念: 1.1 所有类在创建时都默认继承了java.lang.Object 1.2 所有类对象都可以声明为类对象的引用 Object ob1=new String(); Obj ...
- Java面向对象 Object类 内部类
Java面向对象 Object类 内部类 知识概要: 一:Object类 二:内部类 匿名内部类的写法 1.Object O ...
- JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类
JAVA之旅(九)--Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类 天天被一些琐事骚扰,学习还得继续 一.Object类 Obj ...
- (1)抽象类 (2)接口 (3)内部类 (4)Object类
1.抽象类(重点)1.1 抽象方法的概念 抽象方法就是指不能具体实现的方法,也就是该方法没有方法体,使用abstract关键字修饰如: public abstract void cry(); 1.2 ...
- 包和访问权限修饰符,.单例设计模式,.Object类常用方法,.内部类
1.包和访问权限修饰符 1.1 包 为什么要导包? 将字节码文件(.class)文件进行分类存放 --->包 其实就是文件夹 import java.util.Arrays; 包的划分规则 方案 ...
- JAVA集合类简要笔记 - 内部类 包装类 Object类 String类 BigDecimal类 system类
常用类 内部类 成员内部类.静态内部类.局部内部类.匿名内部类 概念:在一个类的内部再定义一个完整的类 特点: 编译之后可生成独立的字节码文件 内部类可直接访问外部类私有成员,而不破坏封装 可为外部类 ...
- java继承,final,super,Object类,toString,equals,
Java中的内部类:成员内部类静态内部类方法内部类匿名内部类 内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可 ...
- 面向对象高级——Object类、包装类以及匿名内部类
Object类 知识点:掌握Object类的作用.掌握Object类中toString().equal()方法的作用 ,掌握Object接收引用数据类型的操作. 假设一个类在定义时没有明白指明继承哪 ...
- JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重 ...
随机推荐
- vfd with stm8
2018-01-14 22:50:26 之前写了pt6311的驱动,要做时钟考虑使用stm8做主控,于是乎将之前的驱动移植到stm8上. 顺带熟悉了stm8的操作2333. 上源码: #ifndef ...
- RDC去省赛玩前の日常训练 Chapter 1
4/3 技能点 A. 生成树的计数 论文:周冬<生成树的计数及其应用>(看不懂 pending) 一个栗子:Codeforces 719D 两个做法 Matrix-Tree + 高斯消元, ...
- ThinkPHP5从零基础搭建CMS系统(一)
了解学习thinkphp5应该是2016年年底的事情,当时还没有接触过thinkphp3版本,觉得通过手册直接上手学习tp5蛮轻松的,现在从零记录下,搭建可扩展的CMS. 1.ThinkPHP环境搭建 ...
- EF CodeFirst 数据库初始化策略
最近用EF做了几个小东西,了解简单使用后有了深入研究的兴趣,所以想系统的研究一下EF CodeFist的几个要点.下面简单列一下目录 1.1 目录 数据库初始化策略和数据迁移Migration的简单介 ...
- Scala编程入门---面向对象编程之Trait高级知识
trait调用链 Scala中支持让类继承多个Trait后,依次调用多个Trait中的同一个方法,只要让多个trait的同一个方法中,在最后都执行super.方法即可 类中调用多个trait中都有这个 ...
- C# SqlBulkCopy数据批量入库
准备条件:20万+数据 界面设计使用的WPF. 没有对比就没有伤害,以下是我两种方式导入数据案例. 运行 结果对比: 首先使用一般sql语句导入,因为时间原因,我就没有等待程序执行完,但是我记录了大约 ...
- 落入绝地求生的Python神仙,实现绝地求生无后座!
叙述 绝地求生已经出来那么久了,大家应该都晓得如今的游戏情形很是差 .特别在高端局,神仙满天飞 搞得很多人类玩家很是没有游戏体验! 由于绝地求生的火爆,繁衍出许多外挂流传于各个地方.飞机上.网吧内,各 ...
- Mysql-单表查询的操作和注意事项
一. 单表查询的语法 二 .关键字的执行优先级(重点) 三 .简单查询 四 .WHERE约束 五. 分组查询:GROUP BY 六 .HAVING过滤 七 .查询排序:ORDER BY 八 .限制查询 ...
- 团队项目第二阶段个人进展——Day3
一.昨天工作总结 冲刺第三天,基本完成发布页面的布局 二.遇到的问题 添加照片的样式会随照片增加而改变 三.今日工作规划 分析要封装的数据有哪些,数据如何传到后端服务器中
- MQ、JMS 关系的理解
MQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传 ...