• 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;
    			}
    			
    		}
    		}
    	}
    	
    	
    }
    

      

  • 相关阅读:
    今天面试一些程序员(新,老)手的体会
    UVA 10635 Prince and Princess
    poj 2240 Arbitrage
    poj 2253 Frogger
    poj 2485 Highways
    UVA 11258 String Partition
    UVA 11151 Longest Palindrome
    poj 1125 Stockbroker Grapevine
    poj 1789 Truck History
    poj 3259 Wormholes
  • 原文地址:https://www.cnblogs.com/a842297171/p/5155056.html
Copyright © 2020-2023  润新知