Java学习 五 核心技术——object类

万类之祖——Object类
如果一个类没有继承父类,那它就是继承Object类:

package com.gao;

public class Test_0 {
    public static void main(String[] args) {
        Test test = new Test();
        System.out.println(test);
    }
}

class Test extends Object{
    public Test() {
        super();
    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        return super.equals(obj);
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public String toString() {
        return super.toString();
    }

    @Override
    protected void finalize() throws Throwable {
        super.finalize();
    }
}


内部类
一个类的内部可以嵌套另一个类

package com.gao;

public class Test_0 {
    public static void main(String[] args) {
        Outer test = new Outer("mimi");
    }
}

class Outer{
    public Outer(String name){
        Inner person = new Inner(name);
    }
    class Inner{
        String name;
        public Inner(String name){
            this.name = name;
            System.out.println(this.name);
        }
    }
}

  1. 内部类可以直接访问外部类的属性,但反过来不行;
  2. 内部类前用“static”关键字修饰,那么这个内部类只能访问外部带有“static”的属性

内部类的调用
先生成外部类的对象,再用外部类的对象生成内部类的对象,如下面所写:

public class Test_0 {
    public static void main(String[] args) {
        Outer outer = new Outer("mimi");
        Outer.Inner inner = outer.new Inner("timi");
    }
}

内部类除了声明在类的内部之外,还可以声明于方法;

package com.gao;

public class Test_0 {
    public static void main(String[] args) {
        Outer outer = new Outer("nina");
    }
}

class Outer{
    public Outer(String name){
        class Inner{
            String name;
            public Inner(String name){
                this.name = name;
                System.out.println(this.name);
            }
        }
        Inner inner = new Inner(name);
    }
}

匿名类与匿名对象
可以减少计算机资源的使用;

package com.gao;

public class Test_1 {
    public static void main(String[] args) {
        B b = new B();
        //匿名对象,一般只用一次,作应急使用
        new B().get(new A());
    }
}

class A{
    void talk(){
        System.out.println("hello world!!");
    }
}

class B{
    public B(){
        //匿名类
        get(new A());
    }
    void get(A a){
        a.talk();
    }
}

数组的传入与传出
Java的数组传入与传出很简单;

package com.gao;

public class Test_3 {
    public static void main(String[] args) {
        //s_1分配到地址空间
        Student s_1 = new Student();
        //s_2没有分配到地址,没有任何意义
        Student s_2 = null;
        //在s_1的地址存储数据
        s_1.age =23;
        s_1.name = "mili";
        System.out.println(s_1.age);
        //将s_1的地址赋给s_2,让他们指向同一个地址
        s_2 = s_1;
        System.out.println(s_2.name);
        //取消s_1指向的地址,现在只有s_2指向那个地址
        s_1 =null;
    }
}

class Student{
    String name;
    int age;
}

接口可以通过子类实现实例化。

this关键字
this大多用于表示当前对象;
static关键字
static用来声明静态变量,方法(相当于所有对象共享)的

package com.gao;

public class Test_4 {
    public static void main(String[] args) {
        People_0 people0 = new People_0();
        People_0 people01 = new People_0();
        people0.sex = "123";
        people01.sex = "asda";
        System.out.println(people0.sex);
    }
}

class People_0{
    String name;
    static String sex;
}

静态代码块

//类用于创建对象时,静态代码块运行且仅运行一次
static
{
	代码;
}

实例:

package com.gao;

public class Test_4 {
    public static void main(String[] args) {
        new People_0();
    }
}

class People_0{
    static {
        System.out.println("People_0类别生成实例!!");
    }
    String name;
    static String sex;
}

注意:静态代码块可以用于初始化静态方法

final关键字

  1. final标记的类无法被继承;
  2. final标记的方法无法被子类覆写;
  3. final标记的变量只能复制一次,即常量;

instanceof关键字
用于判断一个对象是否属于(extends)一个类或实现(implements)了一个接口

对象 instanceof 类或接口

测试:使用匿名对象,输出对象实例:

package com.gao;

public class Test_5 {
    public static void main(String[] args) {
        new Man();
    }
}

class Man{
    String name = "小李";
    String sex = "男";
    int age= 24;
    public Man(){
        System.out.println("名字:"+this.name);
        System.out.println("性别:"+this.sex);
        System.out.println("年龄:"+this.age);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值