java基础---接口、静态代理、内部类

本文详细介绍了Java中的接口、内部类和代理模式。接口作为规范,允许类实现多继承;内部类分为成员内部类和静态内部类,提供了一种封装和隐藏的机制;代理模式通过代理类实现对被代理类的功能增强,静态代理通过实现同一接口实现功能调用。此外,还展示了静态和非静态内部类以及局部内部类的实例应用。
摘要由CSDN通过智能技术生成

1.java 面向对象(接口、内部类)

1.1 接口

  • 接口是一种标准,一个规范 和类是一个级别
    • 就像所有的电源插头与插座一样 所有厂家都做的三线插头和二线插头这样就能相互使用。
  • 语法:
    • 【访问权限修饰符】 interface 接口名 { 接口中的内容 }
      • 访问权限修饰符: public公共的(所有地方都可以访问)默认(package)本包内访问
      • JDK1.7
        • 静态常量:默认【public static final】 类型=常量
        • 抽象方法:默认【public abstract】返回值 方法名();
      • JDK1.8
        • 默认方法:deault 返回值 方法名(){ }
          • 作用:实现接口的类进行重写,如果实现接口的类没有重写该方法,可以由子类对象堆该方法进行调用
        • 静态方法:static 返回值 方法名(){ }
          • 接口中的静态方法调用是通过:接口名.静态方法(); 因为该静态方法属于接口,不属于对象
          • 可以被接口的实现类重写,但该静态方法不能被父类对象(声明接口类型的对象)调用
      • JDk1.9
        • 可以创建私有(private)的方法
  • 接口的特点
    • 接口不能被实例化(不能通过new 来创建对象)
    • 接口被实现的关键字(相当于子父类中的extends) implement
      • class 类名 implement 接口名{}
    • 一个类只能有一个直接父类,但是可以实现多个接口:实现类的多继承
      • class 类名 【extends 父类】 implement 接口1,接口2{}
    • 接口之间实现(继承)用 extends
      • interface 接口名1 extends 接口名2,接口名3{}
  • 接口使用场景: (接口描述的是一个功能)
  • 总结:跟抽象类抽象方法的使用方法差不多 如果接口中使用的default默认方法 调用接口方法的时候可以不重写

1.2 代理模式(静态代理)

  • 分类:静态代理
    • 特点:代理类和被代理类实现了同一个接口的方法,兵去在代理类中传入了被代理类的对象
//客户
public class TestClient {
	public static void main(String[] args) {
		ProxyObject proxy=new ProxyObject(new SubjectImpl());
		proxy.action();
	}
}
//接口 方法 (房子)
interface Subject{
	void action();
}
//代理类   中介
class ProxyObject implements Subject{
	SubjectImpl sub=null;
	public ProxyObject(SubjectImpl sub) {
		this.sub=sub;
	}
	@Override
	public void action() {
		sub.action();
	}
}
//被代理类  业主
class SubjectImpl implements Subject{
	@Override
	public void action() {
		System.out.println("租房业务");
	}
}

1.3 内部类(类的第五个成员)

  • 类的成员: 属性 方法 构造器 代码块 内部类

  • 什么是内部类:一个类嵌套在另一个类中,前者交内部类,后者交外部类

  • 内部类的定义:

    • 成员内部类

      • 非静态内部类
        • 语法:【访问权限修饰符】【修饰符】class 类名{}
          • 访问权限修饰符4个:public protected 默认(package) private
          • 修饰符:static final abstract
        • 调用: 外部类名.内部类名 对象=new 外部类名().new 内部类名();
      • 静态内部类
        • 调用:外部类名.内部类名 对象=new 外部类名.内部类名();
    • 局部内部类

      • 局部内部类封装在外部类的一个方法中,此方法一般有一个返回值,返回该局部内部类类型
      public class TestInnerClass {
      	public static void main(String[] args) {
      		//调用非静态内部类
      		OutClass out=new OutClass();
      		OutClass.InnerClass inner=out.new InnerClass();
      		inner.show1();
      		//调用静态的内部类
      		OutClass.InnerClass1 inner1=new OutClass.InnerClass1();
      		inner1.age=10;
      		inner1.show2();
      	}
      }
      //外部类
      class OutClass{
      	//1.属性
      	private String name;
      	//2.方法
      	
      	public void show() {
      //		System.out.println("这是外部类方法的输出");
      		//外部类调用内部类的方法
      		 OutClass out=new OutClass();
      		 OutClass.InnerClass inner =out.new InnerClass();
      		 inner.show1();
      	}
      	public String getName() {
      		return name;
      	}
      	public void setName(String name) {
      		this.name = name;
      	}
      	//3.构造器
      	public OutClass() {
      		
      	}
      	public OutClass(String name) {
      		super();
      		this.name=name;
      	}
      	//4.代码块
      	{
      		System.out.println("这是外部类的代码块");
      	}
      	//类中的第五个成员
      	//非静态内部类
      	class InnerClass{
      		private String name;
      
      		public String getName() {
      			return name;
      		}
      
      		public void setName(String name) {
      			this.name = name;
      		}
      		public void show1() {
      			show();   //调用外部类的方法
      		}
      	}
      	//静态内部类
      	static class InnerClass1{
      		int age;
      		public void show2() {
      			System.out.println(age);
      		}
      	}
      	public void info() {
      		//局部内部类
      		class Person{ 
      			
      		}
      	}
      }
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bromide-0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值