`

corejava学习4(内部类)

EJB 
阅读更多

 1  Wrapper class

   OverLoading 名相同,参数不同,返回类型不要求

    1. //public void println(double d){}

       //public void println(boolean b){}

       public void println(Object o){}0.

   2.  int num=3;

        double d=num; 

       

        Integer it=new Integer(3);            

        Double dd=it;    

        基本类型数据int可以向double自动扩展,但是包装类型之间

        不能自动的相互转换

 

public class TestWrapper2{   

    public static void main(String[] args){

           // int ------ Integer

           int  i1=3;

           Integer it1=new Integer(i1);

           Integer it2=Integer.valueOf(i1);

          

           int i2=it1.intValue(); 

          

           // Integer -------- String

           Integer it3=new Integer(5);

           String str1=it3.toString();

          

           Integer it4=Integer.valueOf(str1);

           Integer it5=Integer.getInteger(str1);

           Integer it6=new Integer(str1);  

           

           // int -----------  String

           String str2="1234";

           int i4=Integer.parseInt(str2);  //********  

          

           String str3=Integer.toString(i4);

           String str4=i4+"";

    }

}           

 

Equals方法覆盖

public class TestToString {

    public static void main(String[] args) {

           String str1 = new String("abc");

           //String str = "Hello";

           String str2 = new String("abc");

           System.out.println(str1 == str2);

           System.out.println(str1.equals(str2));

           //System.out.println(str1.toString());

           //System.out.println(str1);

           Student s1 = new Student("zhangsan" , 18);

           Student s2 = new Student("zhangsan", 18);

           System.out.println(s1 == s2);

           System.out.println(s1.equals(s2));

           //System.out.println(s.toString());

           //System.out.println(s);

    }

}

class Student{

    String name;

    int age;

    public Student(String name,int age){

           this.name = name;

           this.age = age;

    }

//设置toString方法覆盖,不然父类的方法的方法是打印地址。

    public String toString() {

           return "Name is " + name + " Age is " + age;

    }

//设置equals方法的判断条件

    public boolean equals(Object o) {

           //标准的5

           if(o == null) return false;//1.是空就返回false

           if(o == this) return true;//2.是自己就返回true

           //if(!(o instanceof Student)) return false;//可以先这样写,标准写法是下面的

           if(!(o.getClass() == this.getClass())) return false;//3.不是是同一种类就返回false

           Student s = (Student)o;//4.强转

           //判断名字和年龄都相等才相等

           return (this.name.equals(s.name)) && (this.age == s.age);//5.根据具体数据判断

           //return this.name.equals(s.name);//认为名字相等就相等//不是递归调用

           //return this.age == s.age;//认为年龄相等就相等

           /***************************************

           ***  Student s = (Student) o;

           ***  if(this.age == s.age) return true;

           ***  else return false;

           ***************************************/

    }

}

--------------------------------------------------------------------------------------------------------

Private   方法,属性                          本类

Default    方法,属性,类                    在包

Protected   方法,属性                       本包和子类

public      全部                                到处可见

 

内部类:定义在其他代码块(类体或者方法体)里的类称为内部类。

      编译后每一个内部类都会有自己的独立的字节码文件,文件名Outer$inner.java

根据位置和修饰符的不同分为四种

1 member inner class    成员内部类

2 static inner class      静态内部类  (嵌套内部类)

类以内,方法之外,有静态修饰(static 可以 修辞内部类)

3 local inner class      局部内部类

方法里的类

4 annonymous inner class    匿名内部类

 

没有名字的类,只有这种没有构造方法。

 

 

Static inner class   

1   定义的位置:类以内,方法之外,有静态修饰(static 可以 修辞内部类)

 

2   本身能定义的属性和功能:所有的属性和功能,包括静态和非静态

3   能直接访问什么:只能访问外部类的静态的功能和属性

4   怎么创建对象:outer.inner  in=new outer.inner()

 

 

Member inner class     当作成员变量

1   定义的位置:类以内,方法之外

2   本身能定义的属性和功能:只能定义非静态的属性和方法

 3   能直接访问什么:能访问外部类的所有的属性和功能

4   怎么创建对象:

 

Outer.Inner in1=new outer().new Inner()

Outer.Inner in2=outer.new Inner();

Outer里提供一个getInner(),返回内部类的对象

 

 

 

只要是类与接口就有字节码文件。

 

Local inner class   当作局部变量

1   定义的位置:方法之内,不能用publicstatic

2   本身能定义的属性和功能:只能定义非静态的属性和功能

3   能直接访问什么:能访问外部类的静态的功能和属性,以及方法的用final修饰的局部变量

4   怎么创建对象:相当于局部变量,只能在方法里创建对象。

 

Annonymous inner class

1、个特殊的局部内部类,没有名字,没有构造方法,可以实现一个接口或者继承一个类,生命周期里只能产生一个对象。

2、除了没有名字外,能定义的和能访问的都和普通的局部内部类一致。

3、当你试图创建接口或者抽象类对象的时候,用匿名内部类表示类本的{}紧跟在构造方法之后,调用匿名内部类的方法只能用写类时创建的那个对象。

public class  T1{  

    public static void main(String[] args){ 

             T1 t1=new T1();               

             /*int i=Integer.parseInt(args[0]);             

             Teacher t=t1.getTeacher(i); 

             t.teach();   */   

            t1..set(new Teacher(){

                    public void teach(){    

                         System.out.println("CoreJava");

                  }

             } , 3);  

    } 

   

    public void set(Teacher t,int num){ 

            t.teach();

            System.out.println(num);

    }

   

    public Teacher getTeacher(int num){   

           class  George implements Teacher{   

              public void teach(){    

                     System.out.println("EJB");

              }

           }

        if(num==1)  return new Teacher(){    

              public void teach(){    

                     System.out.println("CoreJava");

              }

        };

        else if(num==2) return new Teacher(){

              public void teach(){    

                     System.out.println("Web");

              }     

        };

        else return new Teacher(){

              public void teach(){    

                     System.out.println("EJB");

              }     

        };

    }

} 

interface Teacher{   

   void teach();

}     

 

class Outer{   

    public void get(){ 

           Teacher t=new Teacher(){

                  public void teach(){ }

           }; 

           t.teach();

    }  

}   

class A implements Teacher{   

    public void teach(){}

}

内部类也是类,也能继承和实现接口。

 

内部类的作用:

1.      不破坏访问权限的情况下,可以使用外部类的私有成员变量和方法。

2.      将接口公开,将实现类作成内部类隐藏起来,强制要求使用者使用接口,强制降低偶合度。

3.      java通过接口和内部类两种机制来实现多继承。

 

 

 

 

关键字

Abstract   do   implements    private    throw   boolean    double    import    protected   throws    break     else    imstanceof   public    transient   byte 

Extends    int       return     true    case       false      interface   short

Try     catch        final     long     static      void       char     finally

Native   super      volatile   class     float       new        switch    while

Continue  for     null  synchronized   default    if     package   this       goto   const   

 

分享到:
评论

相关推荐

    CoreJava学习笔记

    ### CoreJava学习笔记 #### 一、JAVA特点与运行原理 **JAVA特点:** 1. **简单性**:Java的设计者们将C++语言中许多不易理解和容易混淆的部分去除,使得Java更容易理解与掌握。 2. **面向对象**:Java几乎一切都...

    达内 CoreJava老师笔记汇总

    CoreJava DAY11 内部类 70 CoreJava DAY12 集合 List 78 CoreJava DAY13 集合 Set 85 CoreJava DAY14 集合 Map 92 CoreJava DAY15 异常、断言 98 CoreJava DAY16 反射、注释 108 CoreJava DAY17 GUI 120 CoreJava ...

    CoreJava视频课程(百度云链接)

    根据提供的文件信息,我们可以推断出这是一套关于CoreJava的视频教程。下面将围绕CoreJava的核心知识点进行详细的介绍。 ### CoreJava基础知识 #### Java语言简介 Java是一种广泛使用的、面向对象的编程语言,由...

    corejava,java核心编程

    【标签】:“corejava” 在计算机编程领域,Core Java是指Java的核心部分,它是Java技术的基础,涵盖了Java语言的基础语法、面向对象编程概念、图形用户界面(GUI)开发以及网络编程等方面。以下是对这些知识点的...

    学习笔记 java\CoreJava笔记\CoreJava_day11

    CoreJava_day11的学习笔记主要涵盖了集合框架,特别是关于List、Set和Map接口,以及ArrayList、Vector和LinkedList等具体实现类的知识点。 首先,集合框架是用来存放对象的对象,它提供了一组接口和类,使得我们...

    corejava-达内内部资料

    总之,《CoreJava-达内内部资料》是一份全面且深入的Java学习资源,无论你是初学者还是有一定经验的开发者,都能从中受益匪浅。通过系统地学习这份资料,你将能够掌握Java编程的核心技术,为自己的职业生涯打下坚实...

    corejava12示例代码

    《CoreJava12示例代码》是一份针对Java编程语言深度学习的重要资源,主要涵盖了CoreJava12版本中的核心概念和特性。这份压缩包文件包含了丰富的示例代码,旨在帮助开发者深入理解Java语言的各个方面,提升编程技能。...

    学习笔记 java\CoreJava笔记\CoreJava_day12

    在Java编程语言中,SortedSet接口是Set接口的一个子接口,它添加了对集合元素排序的能力。SortedSet接口要求其实现类必须维护元素的排序顺序,这种顺序可以是元素的自然顺序(即元素自身可比较),也可以是通过提供...

    corejava的21天课程

    《CoreJava的21天课程》是一门深入学习Java编程的系统教程,涵盖了从基础到高级的全方位知识。这门课程旨在帮助学员在21天内掌握Java编程的核心概念和技术,每天的学习内容包括详细的代码示例和课堂笔记,确保学习者...

    Core Java Java的基本知识

    Core Java 是学习 Java 编程的基础,它包含了 Java 编程的核心概念和技术。本文将深入探讨 Core Java 的基本知识,适合初学者作为入门指南。 #### 二、Java 核心概念与基础知识 ##### 1. 标识符与关键字 - **...

    core java source code

    "Core Java 2nd Edition, Volume I & Volume II's Code" 提供了全面深入的学习资源,帮助开发者更好地理解和掌握Java的核心概念。这个压缩包包含两个部分:v1和v2,分别对应《核心Java 2nd Edition》的第一卷和第二...

    Core java学习书

    ### Core Java 学习知识点概览 #### 一、Java 的历史与发展 ...以上是基于提供的核心Java学习书籍的简要知识点总结。这些概念构成了Java编程的基础,掌握它们对于学习更高级的Java技术和框架至关重要。

    core java 7th上

    通过阅读《Core Java 7th》,读者不仅可以掌握Java 7的核心概念和技术,还能培养良好的编程习惯和问题解决能力,为进一步学习Java 8及以上版本打下坚实基础。书中的实例和练习题有助于巩固理论知识,提升实践技能。

    Core Java.JAVA核心技术(中文版)

    《Core Java.JAVA核心技术(中文版)》是学习Java编程的重要参考资料,主要涵盖了Java语言的基础以及进阶知识。这本书深入浅出地讲解了Java的核心概念和技术,为读者提供了全面而细致的学习路径。以下是对该书内容的...

    corejava 源码

    CoreJava的源码揭示了这些类的内部实现,如数组和链表的区别,以及哈希映射的工作原理。 5. **多线程**:Java提供内置支持进行多线程编程,通过`Thread`类和`Runnable`接口实现。理解源码可以让我们知道如何控制...

    学习笔记 java\CoreJava笔记\CoreJava_day10

    在Java编程语言中,"CoreJava_day10"的学习笔记主要涵盖了两个核心概念:自动装箱和自动解箱,以及内部类和枚举。这些知识点是理解Java面向对象特性的关键部分。 首先,我们来详细讲解自动装箱和自动解箱。在Java 5...

    CoreJava面试宝典

    ### CoreJava面试宝典知识点详解 #### Java变量的基本概念 - **变量的性质**:在Java中,变量类似于自然语言中的代词,用于存储数据。 - **Java的类型特性**: - Java是一种**强类型语言**,这意味着每个变量都...

    corejava_code

    "CoreJava代码"这个主题涵盖了Java编程语言的基础到高级概念,是Java开发人员必须掌握的核心知识。在这一压缩包中,我们很可能找到了一系列用于演示和练习这些概念的源代码文件。下面,我们将深入探讨Java的一些关键...

Global site tag (gtag.js) - Google Analytics