Java 接口 内部类 静态内部类

这篇博客详细讲解了Java中的接口和内部类。首先介绍了接口的定义、实现方式及其实例化方法,强调了接口不能直接实例化,但可以通过多态方式实现。接着,讨论了类与接口的关系,包括单继承和多实现。对于内部类,博客解释了其概念,指出内部类可以直接访问外部类的所有成员,并展示了如何从外部类访问内部类的方法。最后,揭示了内部类的本质,可以看作是接口的子类或类的子类对象,并提供了匿名内部类的使用示例。

//Java 接口 内部类 静态内部类
一:
public class Demo {

public static void main(String[] args) {

// a:接口用关键字interface表示
// interface 接口名 {}
// b:类实现接口用implements表示
// class 类名 implements 接口名 {
// 重写方法;
// }
// c:接口不能实例化
// 那么,接口如何实例化呢?
// 按照多态的方式来实例化。
// d:接口的子类
// a:可以是抽象类。但是意义不大。
// b:可以是具体类。要重写接口中的所有抽象方法。(推荐方案)

	//类和接口之间的关系叫实现关系 implements
	//类和类之间的关系叫继承关系      extends
	
	MyInterface1 inter1 = new MyInterface1Impl();
	//和抽象类一样,无法直接创建实例对象,需要使用多态的方式来完成!!
	//接口的子类
	//1,抽象类,可以不重写接口的抽象方法
	//2,普通类,必须重写接口的所有抽象方法
	//3,接口,接口与接口之间是继承关系,而且支持多继承!
            //		a:类与类:

// 继承关系,只能单继承,可以多层继承。
// b:类与接口:
// 实现关系,可以单实现,也可以多实现。
// 并且还可以在继承一个类的同时实现多个接口。
// c:接口与接口:
// 继承关系,可以单继承,也可以多继承。
}

}

public class Demo {

public static void main(String[] args) {

// A:内部类概述:类里面还有一个类
// B:内部类访问特点
// a:内部类可以直接访问外部类的成员,包括私有。
// b:外部类要访问内部类的成员,必须创建对象。
// 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
// C:案例演示
// 内部类及其访问特点

}

}
二:
/**

  • 外部类
  • @author

*/
class OuterClass{
private int a = 1;

/**
 * 内部类
 * @author qiuzhiwei
 *
 */
class InnerClass{
	//innerShow方法的调用必须使用InnerClass类的对象
	//使用InnerClass类的对象,必须通过OuterClass类的对象
	
	public void innerShow(){

// 内部类可以直接访问外部类的成员,包括私有。
System.out.println(a);
}

}

public void outerShow(){
	//通过内部类对象来调用
	//外部类.内部类 对象名  = new 外部类对象.内部类对象;

// OuterClass.InnerClass innerClass = new OuterClass().new InnerClass();
// OuterClass.InnerClass innerClass = this.new InnerClass();
InnerClass innerClass = new InnerClass();
innerClass.innerShow();
}

}

三:

public class Demo {

public static void main(String[] args) {

// A:内部类概述:类里面还有一个类
// B:内部类访问特点
// a:内部类可以直接访问外部类的成员,包括私有。
// b:外部类要访问内部类的成员,必须创建对象。
// 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
// C:案例演示
// 内部类及其访问特点

}

}
四:
/**

  • 外部类
  • @author

*/
class OuterClass{
private int a = 1;

/**
 * 内部类
 * @author qiuzhiwei
 *
 */
class InnerClass{
	//innerShow方法的调用必须使用InnerClass类的对象
	//使用InnerClass类的对象,必须通过OuterClass类的对象
	
	public void innerShow(){

// 内部类可以直接访问外部类的成员,包括私有。
System.out.println(a);
}

}

public void outerShow(){
	//通过内部类对象来调用
	//外部类.内部类 对象名  = new 外部类对象.内部类对象;

// OuterClass.InnerClass innerClass = new OuterClass().new InnerClass();
// OuterClass.InnerClass innerClass = this.new InnerClass();
InnerClass innerClass = new InnerClass();
innerClass.innerShow();
}

}
五:本质:就是一个接口的子类对象,或者是一个类的子类对象
通过对象调用方法 .show();
public class Demo09 {

public static void main(String[] args) {
	
	//匿名内部类

// new 类名或接口名(){
// 重写方法;
// };

	//匿名内部类对象
	new MyInterface1(){
		
		public void show(){
			System.out.println("hello1");
		}
		
		
	}.show();
	System.out.println("--------------");
	//本质:就是一个接口的子类对象,或者是一个类的子类对象
	//通过对象调用方法 .show();
	new  MyClass1() {
		
		public void show(){
			System.out.println("hello2");
		}
		
	}.show();
	System.out.println("--------------");
	
	new MyClass2(){
		public void show(){
			System.out.println("hello3");
		}
		
	}.show();
	
	
}

}

interface MyInterface1 {
public abstract void show();
}

abstract class MyClass1{

public abstract void show();

}

class MyClass2{

public void show(){
	System.out.println("hello1");
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值