美文网首页Java
java学习笔记#1-内部类/接口等概念

java学习笔记#1-内部类/接口等概念

作者: edwin1993 | 来源:发表于2017-04-25 22:07 被阅读0次

成员变量与局部变量:

具体定义不再赘述,记录一些以前忽视的差异;

成员变量在声明过程中会被系统默认初始化,默认值0;
局部变量在声明过程中不会被系统默认初始化;
(final 修饰的为特殊情况,不会初始化)


局部变量和成员变量命名可以重复,当调用过程中冲突时,符合就近原则。(优先调用局部变量)

静态变量、静态方法:

静态变量可以通过对象名直接访问,也可以直接通过类名访问。
非静态类不能以此方式调用,需要声明类后,通过类调用。

public class HelloWorld {

    static int staticInt = 99;
    public static void main(String[] args) {
        System.out.println(staticInt);
        System.out.println(HelloWorld.staticInt);
    }
}

与静态变量一样静态方法可以通过类名直接调用,而不需要实例化类的对象。

弊端:
静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,就会占用大量的内存空间。

关于内部类的概念:

静态内部类:

静态相关访问非静态内容都会受到限制,如静态内部类不能直接访问外部类的非静态成员。同样,静态内容声明较为直接,创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();

方法内部类:

方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。

Object类:

ToString():

ToString()方法时Object类中的方法,因为所有的类默认继承Object类,所以在将类作为字符串输出时,都会默认调用ToString()方法,一般时将对象转换为关于内存地址的哈希数。如果我们希望返回对象的属性,则需要在对象中对ToString()方法进行重写。

equals():

A.equals(B) 比较的是A,B两个对象的引用是否指向同一个内存区域。
当然,该方法可以由IDE自动重写。

多态:

引用的多态:

父类引用指向本类;
父类引用指向子类;

  Animal animal1 = new Animal();
  Animal animal2 = new Dog();
方法的多态:

本类方法的调用;
子类对父类方法的继承、重写等。

类型转化:

        Animal animal ;
        Dog dog = (Dog)new Animal(); //强制类型转化 animal->dog
        animal = dog;  //自动类型转化dog ->animal
        Cat cat1 = (Cat) animal;  // 虽然不报错,但是错误。  转化关系相当于dog->cat

通过instanceof 关键字判断是否包含,从而决定是否可以转化。所以在使用强制转化时,最好通过instanceof关键字判断一下。

        if(animal instanceof Cat){
            System.out.printf("animal 对象含有 Cat 类");
        }

接口相关:

匿名内部类:

IPlayGame 为接口,接口中的方法只能声明,无法做具体描述。所以在new对象的时候,需要将抽象方法具体化。

        IPlayGame iPlayGame = new IPlayGame() {
            @Override
            public void PlayGame() {
                System.out.printf("使用匿名内部类");
            }
        };
        iPlayGame.PlayGame();

        new IPlayGame(){
            @Override
            public void PlayGame() {
                System.out.println("使用匿名内部类2");
            }
        }.PlayGame();

相关文章

  • java学习笔记#1-内部类/接口等概念

    成员变量与局部变量: 具体定义不再赘述,记录一些以前忽视的差异; 成员变量在声明过程中会被系统默认初始化,默认值0...

  • Kotlin匿名内部类

    引言 匿名内部类常用作接口实现、回调等 java kotlin

  • PHP转JAVA的记录

    Java 数组 内部类 内部类的创建:内部类可以对包内其他类隐藏想实现一个接口时, 不想新建类文件 内部类可以访问...

  • Java 编程思想笔记六:接口和内部类

    第9章《接口》和第10章《内部类》主要介绍了抽象类、接口、内部类、匿名类以及嵌套类等概念,以及它们的区别和联系。主...

  • 学android一定要会Java吗

    一、那是必须的,一定得会java,而且还必须清楚类、对象、接口、内部类、匿名内部类、范型,监听器、事件驱动等这些概...

  • java接口,接口回调

    0、 java 接口概念 一直对 java 接口概念比较模糊,因为平时的学习相对简单,没有用上,所以就很模糊。...

  • 2017-10-12

    这是我学习Java内部类的笔记 1.为什么使用内部类? 使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(...

  • 5.4 输入事件/Input Events

    Android实现监听事件的四种方式: 1-匿名内部类实现; 2-外部类实现;3-接口实现;4-绑定到标签 1-匿...

  • Java基础:内部类

    Java中有一种特殊的类,是写在类里面的,叫作内部类。内部类又分为成员内部类、局部内部类、静态内部类、接口内部类和...

  • 接口与抽象类【Java提高四】

    接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。 抽象类与接口是java语言中对抽象概念进行定义...

网友评论

    本文标题:java学习笔记#1-内部类/接口等概念

    本文链接:https://www.haomeiwen.com/subject/ovuvzttx.html