zoukankan      html  css  js  c++  java
  • JavaSE-内部类

    package com.btp.t2;
    /*
     * 类的第五个成员:内部类
     * 1.相当于说,我们可以在类的内部再定义类。外面的类:外部类。里面定义的类:内部类
     * 2.内部类的分类:成员内部类(声明在类内部且方法外)  vs 局部内部类  (声明在方法里)
     * 3.成员内部类:(是类的一个成员,同时也是一个类,所以拥有类和类成员的特点)
     *      3.1 是外部类的一个成员:①可以有修饰符(4个)②可以用static,final,abstract修饰③可以调用外部类的成员和方法
     *      3.2 具体类的特点:①abstract②可以在其内部定义属性,方法,构造器
     * 4.局部内部类:
     * 
     * 5.关于内部类:掌握三点
     *    ①创建成员内部类的对象
     *    ②如何区分调用外部类,内部类的变量(尤其是变量重名时)
     *    ③局部内部类的使用
     * 
     */
    public class TestInnerClass {
    
    	public static void main(String[] args) {
    		//创建静态内部类的对象,可以直接通过外部类调用静态内部类的构造器
    		Person.Hand h=new Person.Hand();
    		//创建非静态的内部类的对象,必须先创建外部类的对象,通过外部类的对象调用内部类的构造器
    		Person p=new Person();
    		Person.Brain b=p.new Brain();
    		b.info();
    		b.setName("Joardan");
    
    	}
    
    }
    
    class Person{
    	String name="Kobe";
    	int age;
    	//成员内部类(非static的)
    	class Brain{
    		String name="James";
    		int id;
    		public String getName() {
    			return name;
    		}
    		public void setName(String name) {
    			//this.name = name;
    			System.out.println(name);//Joardan
    			System.out.println(this.name);//James
    			System.out.println(Person.this.name);//Kobe
    		}
    		public int getId() {
    			return id;
    		}
    		public void setId(int id) {
    			this.id = id;
    		}
    		public Brain() {
    			super();
    		}
    		public void info(){
    			show();
    		}
    		
    	}
    	//成员内部类(静态内部类)
    	static class Hand{
    		
    	}
    	public void show(){
    		System.out.println("我是show方法");
    	}
    	public void method1(){
    		//局部内部类
    		class A{
    			
    		}	
    	}
    	
    	//常常使用一个方法,使其返回值为某个类或接口的对象,而这个类或接口在方法内部创建
    	public Comparable getComparable(){
    		//1.创建一个实现Comparable接口的类:局部内部类
    		class MyComparable implements Comparable{
    
    			@Override
    			public int compareTo(Object arg0) {
    				// TODO 自动生成的方法存根
    				return 0;
    			}
    			
    		}
    		//2.返回一个实现类的对象
    		Comparable c=new MyComparable();
    		return c;//或者直接return new MyComparable();
    		
    	}
    	
    	public Comparable getComparable1(){
    		//返回一个实现Comparable接口的匿名内部类的对象
    		return new Comparable(){
    
    			@Override
    			public int compareTo(Object o) {
    				// TODO 自动生成的方法存根
    				return 0;
    			}
    			
    		}
    		}
    	}
    	
    	
    }
    

      

  • 相关阅读:
    LeetCode题解之Flipping an Image
    LeetCode 之Find Minimum in Rotated Sorted Array
    LeetCode题解Transpose Matrix
    LeetCode 题解之Minimum Index Sum of Two Lists
    LeetCode题解之Intersection of Two Linked Lists
    LeetCode 题解之Add Two Numbers II
    LeetCode题解之Add two numbers
    href="#"与href="javascript:void(0)"的区别
    有关ie9 以下不支持placeholder属性以及获得焦点placeholder的移除
    ie7下属性书写不规范造成的easyui 弹窗布局紊乱
  • 原文地址:https://www.cnblogs.com/a842297171/p/5155056.html
Copyright © 2011-2022 走看看