前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 关于类的专题

Java 关于类的专题

作者头像
Michael阿明
发布2021-09-06 10:01:59
3320
发布2021-09-06 10:01:59
举报
文章被收录于专栏:Michael阿明学习之路

文章目录

1. Object 类

所有的类都是继承于 Object 类,该类有一个 toString() 方法,打印对象时调用

代码语言:javascript
复制
class Person4 extends Object{ // extends Object 可省略
    String name = "Michael";
    int age = 18;
}

class test4{
    public static void main(String[] args)
    {
        Person4 p = new Person4();
        System.out.println(p);
    }
}

输出:

代码语言:javascript
复制
Person4@1b6d3586
  • 覆写 toString()
代码语言:javascript
复制
class Person4 extends Object{ // extends Object 可省略
    String name = "Michael";
    int age = 18;
    public String toString(){
        return "I am " + name + ", age " + age;
    }
}

class test4{
    public static void main(String[] args)
    {
        Person4 p = new Person4();
        System.out.println(p);
    }
}

输出:

代码语言:javascript
复制
I am Michael, age 18

2. 内部类

  • 内部类可以调用外部类的数据和方法
  • 部类无法访问内部类的数据和方法
  • static 内部类 不能访问 非static 外部类的成员
代码语言:javascript
复制
class Outer{
    int score = 95;
    void inst()
    {
        Inner in = new Inner();
        in.display();
    }
    class Inner{
        void display()
        {
            System.out.println("score: " + score);
        }
    }
}
代码语言:javascript
复制
class Outer{
    int score = 95;
    class Inner{
        String innerName = "Michael";//外部类无法访问
        void display()
        {
            System.out.println("score: " + score);
        }
    }
}
class test4{
    public static void main(String[] args)
    {
        Outer out = new Outer();
        Outer.Inner in = out.new Inner();
        // 用外部类的对象 去实例化一个 内部类的对象
        in.display();
    }
}

3. 覆写 Object 类的 equals 方法

代码语言:javascript
复制
class Person4 extends Object{ // extends Object 可省略
    private String name = "Michael";
    private int age = 18;
    public Person4(String name, int age)
    {
        this.name = name;
        this.age = age;
    }
}

class test4{
    public static void main(String[] args)
    {
        Person4 p1 = new Person4("Michael", 18);
        Person4 p2 = new Person4("Michael", 18);
        System.out.println(p1.equals(p2) ? "eq" : "not eq");
        // not eq , 不覆写 equals , 不对劲,内容一样的.
    }
}
代码语言:javascript
复制
class Person4 extends Object{ // extends Object 可省略
    private String name = "Michael";
    private int age = 18;
    public Person4(String name, int age)
    {
        this.name = name;
        this.age = age;
    }

    // 覆写父类 Object 的 equals
    public boolean equals(Object o)
    {
        boolean eq = true;
        Person4 p1 = this;
        if(o instanceof Person4)
        {
            Person4 p2 = (Person4) o;
            eq = (p1.name==p2.name && p1.age==p2.age);
        }
        else
            eq = false;
        return eq;
    }
}

class test4{
    public static void main(String[] args)
    {
        Person4 p1 = new Person4("Michael", 18);
        Person4 p2 = new Person4("Michael", 18);
        System.out.println(p1.equals(p2) ? "eq" : "not eq");
        // eq 
    }
}

4. 接口对象实例化

  • 接口不能直接实例化,可以通过其子类进行实例化,抽象类也一样
代码语言:javascript
复制
//接口对象实例化
interface Usb{
    public void start();
    public void stop();
}

class MoveDisk implements Usb
{
    public void start(){
        System.out.println("MoveDisk start...");
    }
    public void stop(){
        System.out.println("MoveDisk stop...");
    }
}
class Mp3 implements Usb
{
    public void start(){
        System.out.println("Mp3 start...");
    }
    public void stop(){
        System.out.println("Mp3 stop...");
    }
}

class Computer{
    public void work(Usb u){
        u.start();
        u.stop();
    }
}
代码语言:javascript
复制
new Computer().work(new MoveDisk());
new Computer().work(new Mp3());

输出:
MoveDisk start...
MoveDisk stop...
Mp3 start...
Mp3 stop...

5. this() 调用无参构造方法

只能在构造函数中使用,且放在第一句

6. static 属性所有对象共享一份

7. static 方法不能调用 非static 属性

8. 静态代码块

  • 最先执行(且先于静态方法),static { ... } 只会被执行一次,经常用来类属性初始化

9. final 关键字

  • final 标记的类,不能被继承
  • final 标记的方法,不能被子类覆写
  • final 标记的变量,常量,一次赋值,不能修改

10. instanceof 关键字

  • 对象 instanceof 类(或接口),返回 boolean
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. Object 类
  • 2. 内部类
  • 3. 覆写 Object 类的 equals 方法
  • 4. 接口对象实例化
  • 5. this() 调用无参构造方法
  • 6. static 属性所有对象共享一份
  • 7. static 方法不能调用 非static 属性
  • 8. 静态代码块
  • 9. final 关键字
  • 10. instanceof 关键字
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档