Java面向对象-内部类

内部类

  1. 理解:一个类中再声明另外一个类

  2. 分类:
    成员内部类
    静态内部类
    接口内部类
    局部内部类
    匿名内部类

  3. 应用场景:
    a. B类的对象只在A类中使用,并且B类对象使用到了A类所有的属性,就可以将B类作为A类的成员内部类
    b. B类的对象只在A类中使用,并且B类对象使用到了A类静态的属性,就可以将B类作为A类的静态内部类
    c. 抽象类的子类只创建一次对象,就没必要创建子类,直接使用匿名内部类(new 抽象类)以new对象的,接口也是不能new对象,new出来的匿名类内部类的对象

  4. 类 - 接口的关系:
    类 - 类:单继承
    类 - 接口:多实现
    接口 - 接口:多继承

  5. 各内部类理解代码
    5.1成员内部类

    package com.qf.outter_inner_02;
    
    import com.qf.outter_inner_02.Outter.Inner;
    
    public class Test01 {
    	/**
    	 * 知识点:成员内部类
    	 * 
    	 * 需求:创建成员内部类的对象,并调用方法
    	 * 
    	 * 小结:
    	 * 		1.创建成员内部类对象,必须先创建外部类对象,再创建内部类对象
    	 * 		2.成员内部类可以使用外部类所有的属性
    	 */
    	public static void main(String[] args) {
    		
    		Inner inner = new Outter().new Inner();
    		inner.method();
    		
    	}
    }
    
    package com.qf.outter_inner_02;
    
    //外部类
    public class Outter {
    	
    	private 	String str1 = "属性1";
    				String str2 = "属性2";
    	protected 	String str3 = "属性3";
    	public 		String str4 = "属性4";
    	final 		String str5 = "属性5";
    	static 		String str6 = "属性6";
    	static final String str7 = "属性7";
    
    	//成员内部类
    	class Inner{
    		
    		String str1 = "成员内部类的属性";
    		
    		public void method(){
    			System.out.println("成员内部类的方法");
    			System.out.println(str1);//this.str1
    			System.out.println(Outter.this.str1);
    			System.out.println(str2);//Outter.this.str2
    			System.out.println(str3);//Outter.this.str3
    			System.out.println(str4);//Outter.this.str4
    			System.out.println(str5);//Outter.this.str5
    			System.out.println(str6);//Outter.str6
    			System.out.println(str7);//Outter.str7
    		}
    	}
    	
    }
    

    5.2静态内部类

    package com.qf.outter_inner_03;
    
    import com.qf.outter_inner_03.Outter.Inner;
    
    public class Test01 {
    	/**
    	 * 知识点:静态内部类
    	 * 
    	 * 需求:创建静态内部类的对象,并调用方法
    	 * 
    	 * 小结:
    	 * 		1.创建静态内部类对象,不用创建外部类对象
    	 * 		2.静态内部类只能使用外部类的静态属性
    	 */
    	public static void main(String[] args) {
    		
    		Inner inner = new Outter.Inner();
    		inner.method();
    		
    	}
    }
    
    package com.qf.outter_inner_03;
    
    //外部类
    public class Outter {
    	
    	static 		String str1 = "属性1";
    	static final String str2 = "属性2";
    
    	//静态内部类
    	static class Inner{
    		
    		public void method(){
    			System.out.println("静态内部类的方法");
    			System.out.println(str1);//Outter.str6
    			System.out.println(str2);//Outter.str7
    		}
    	}
    	
    }
    
    

    5.3接口内部类

    package com.qf.outter_inner_04;
    
    import com.qf.outter_inner_04.Outter.Inner;
    
    public class Test01 {
    	/**
    	 * 知识点:接口内部类
    	 * 
    	 * 需求:创建接口内部类的对象,并调用方法
    	 * 
    	 * 小结:
    	 * 		1.接口内部类就是静态内部类
    	 * 		2.接口内部类默认使用public static修饰
    	 */
    	public static void main(String[] args) {
    		
    		Inner inner = new Outter.Inner();
    		inner.method();		
    	}
    }
    
    package com.qf.outter_inner_04;
    
    //外部接口
    public interface Outter {
    	
    	//接口内部类
    	//public static class Inner{
    	class Inner{
    		public void method(){
    			System.out.println("接口内部类的方法");
    		}
    	}
    	
    }
    
    

    5.4局部内部类

    package com.qf.outter_inner_05;
    
    public class Test01 {
    	/**
    	 * 知识点:局部内部类
    	 * 
    	 * 需求:调用局部内部类里的方法
    	 * 
    	 * 小结:
    	 * 		局部内部类不能使用访问修饰符修饰(因为局部内部类的作用域就是在该方法内)
    	 */
    	public static void main(String[] args) {
    		
    		Outter outter = new Outter();
    		outter.method();
    	}
    }
    
    
    package com.qf.outter_inner_05;
    
    //外部类
    public class Outter {
    
    	public void method(){
    		
    		//局部内部类
    		class Inner{
    			public void innerMethod(){
    				System.out.println("局部内部类里的方法");
    			}
    		}
    		
    		//创建局部内部类对象
    		Inner inner = new Inner();
    		inner.innerMethod();
    	}
    }
    
    

    5.5匿名内部类(在抽象类中)

  • 29
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一种非常流行的面向对象编程语言,它的核心概念之一就是类与对象。 类是用来描述具有相同属性和行为的一组对象的模板。可以把类看作是一种自定义的数据类型。在类中,我们可以定义各种属性和方法来描述对象的特征和行为。属性是对象的状态,而方法则是对象的行为。 对象是类的具体实例化,在内存中占有一定的空间。可以把对象看作是类的变量,通过实例化类来创建对象。对象可以访问类中定义的属性和方法,并且每个对象都有自己独立的状态。 通过类和对象的组合使用,我们可以实现面向对象编程的核心思想:封装、继承和多态。 封装是指将数据和操作数据的方法封装在类的内部,隐藏内部实现细节,只提供公共的访问方法。这样可以保证数据的安全性和一致性,提高代码的可维护性和重用性。 继承是指通过已有的类创建新的类,提供新类所具有的属性和方法,并且可以重写或扩展父类的方法。继承可以减少代码的冗余,提高代码的复用性和可扩展性。 多态是指同一类型的对象在调用同一个方法时,可以有不同的行为表现。它通过方法重载和方法重写实现。多态可以提高代码的灵活性和扩展性,让我们能够编写更加通用和可复用的代码。 总之,类与对象是Java面向对象编程的基石,它们的灵活组合使用可以让我们编写出高质量、模块化的代码,并且提高了代码的可维护性和可扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值