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类和内部类的更多相关文章

  1. Object类、包装类、内部类详解

    1.Object类 1.概念: 1.1 所有类在创建时都默认继承了java.lang.Object 1.2 所有类对象都可以声明为类对象的引用 Object ob1=new String(); Obj ...

  2. Java面向对象 Object类 内部类

     Java面向对象 Object类    内部类 知识概要:                 一:Object类                 二:内部类 匿名内部类的写法 1.Object O ...

  3. JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类

    JAVA之旅(九)--Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类 天天被一些琐事骚扰,学习还得继续 一.Object类 Obj ...

  4. (1)抽象类 (2)接口 (3)内部类 (4)Object类

    1.抽象类(重点)1.1 抽象方法的概念 抽象方法就是指不能具体实现的方法,也就是该方法没有方法体,使用abstract关键字修饰如: public abstract void cry(); 1.2 ...

  5. 包和访问权限修饰符,.单例设计模式,.Object类常用方法,.内部类

    1.包和访问权限修饰符 1.1 包 为什么要导包? 将字节码文件(.class)文件进行分类存放 --->包 其实就是文件夹 import java.util.Arrays; 包的划分规则 方案 ...

  6. JAVA集合类简要笔记 - 内部类 包装类 Object类 String类 BigDecimal类 system类

    常用类 内部类 成员内部类.静态内部类.局部内部类.匿名内部类 概念:在一个类的内部再定义一个完整的类 特点: 编译之后可生成独立的字节码文件 内部类可直接访问外部类私有成员,而不破坏封装 可为外部类 ...

  7. java继承,final,super,Object类,toString,equals,

    Java中的内部类:成员内部类静态内部类方法内部类匿名内部类 内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可 ...

  8. 面向对象高级——Object类、包装类以及匿名内部类

    Object类  知识点:掌握Object类的作用.掌握Object类中toString().equal()方法的作用 ,掌握Object接收引用数据类型的操作. 假设一个类在定义时没有明白指明继承哪 ...

  9. JAVASE(十)面向对象:特性之多态性、Object类、代码块、关键字:static、final、父子类执行顺序

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.面向对象的特性之:多态性 多态性的理解:事物的多种形态 1.1 广义上多态性的体现:①方法的重写,重 ...

随机推荐

  1. 浅谈Java多线程的同步问题 【转】

    多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问. 下面以一个简单的实例来进行对比分析.实例要完成的工作非常简单,就是创建10个线程,每个线 ...

  2. Flask构建微电影(一)

    第一章.项目介绍  1.1.前言    本教程我将带领大家如何使用flask框架开发微电影网站.Flask是python中最受欢迎的轻量级web框架,flask扩展丰富,冗余度小,可自由选择组合各种插 ...

  3. Python_CRC32

    #计算文件的CRC32值 import sys import zlib import os.path filename=sys.argv[1] print(filename) if os.path.i ...

  4. JaveScript基础(1)之变量和数据类型

    1.JaveScript变量的定义方式: A:隐式定义:直接给变量赋值: temp='hello'; alert(temp); PS:使用变量前要先进行初始化工作,否则会报变量未被定义的错误; B:显 ...

  5. 树莓派+花生棒+leanote搭建自己的笔记服务器

    背景 对于一个程序猿来说.女朋友可以(暂时)没有,但是不能没有一个很好的记笔记的应用.因为记笔记可以帮助自己积累学习提升自己.每一次回头看自己记得笔记,你都会有新的理解. 也许有人会说,用有道云啊,有 ...

  6. 使用非阻塞ServerSocketChannel、SocketChannel代替ServerSocket和Socket

    http://blog.csdn.net/timliang18601860/article/details/7104485

  7. iPhone越狱

    手机越狱 常用工具:PP越狱助手.盘古越狱.iTunes 如果手机第一次越狱使用pp越狱助手成功率比较高 iPhone固件下载地址http://iphone.91.com/fw/iphone5/ 具体 ...

  8. java 23种设计模式教程

    设计模式分类 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模 ...

  9. nodejs版本更新问题:express不是内部或外部命令

    版本更新后,我们使用熟悉的npm install -g express命令安装,但是,安装成功之后居然提示express不是内部或外部命令. nodejs小问题:[1]express不是内部或外部命令 ...

  10. Latex数学公式中的空格表示方法

    两个quad空格 a \qquad b 两个m的宽度 quad空格 a \quad b 一个m的宽度 大空格 a\ b 1/3m宽度 中等空格 a\;b 2/7m宽度 小空格 a\,b 1/6m宽度 ...