2020-12-10接口的作用、特性及创建、继承/内部类的作用、定义和创建/局部类/匿名类对象/静态代码块中的内容

接口的作用

java不支持多继承只能有一个直接父类
java允许一个类实现多接口
java中的接口就是用来实现的

接口的特性及创建

接口中属性定义必须是公共的、静态的、常量
接口中值允许定义公共的、抽象的实例方法
接口必须由其具体实现类进行实例化
接口回调:根据实际扩展类来确定调用扩展类中实现的方法的过程和现象

接口的继承

java规定接口只能由其他接口实现继承
子接口继承的目的在于拥有父接口功能后添加新的抽象定义
一个普通类实现接口时必须同时实现父接口的抽象方法
接口被实现目的就是实现业务功能具体化

内部类的作用

内部类通过外部类访问从而被限定使用权限
内部类所定义功能更多时候只为外部类提供
内部类让某些功能使用更加安全

内部类的定义和创建

内部类必须定义在某个类当中,所在类为其外部类
内部类可使用public,protected,private访问修饰符
内部类可以使用abstract,final,static修饰符
内部类没有单独的java源文件,只有class文件
内部类的类文件名称规范:外部类名$内部类名.class

创建普通内部类:
Computer.Cpu cpu = new Computer().new Cpu();

创建静态内部类:
Computer.Cpu cpu = new Computer.Cpu();

创建一个名为Computer的接口

package com.xit.interfaces;

public interface Computer {//创建一个名为Computer的接口
	void useComputer();//创建抽象方法
}

创建名为NoteBookComputer的类来实现接口Computer,在内部创建一个内部类

package com.xit.interfaces.imp;

import com.xit.interfaces.Computer;

public class NoteBookComputer implements Computer {//创建类实现接口

	@Override
	public void useComputer() {
		Hoard hoard = new NoteBookComputer.Hoard();//创建了一个本地的静态内部类对象
		hoard.displaySelfInfo();//调用内部静态类方法
		
	}
	
	
	public class Cpu{//创建一个内部类
		public void handleDate() {
			System.out.println("我是处理器我可以很快的处理业务数据");
		}
	}
	/**
	 * 私有的静态内部类
	 * @author Administrator
	 *
	 */
	private static class Hoard{
		public void displaySelfInfo() {
			System.out.println("我是主板,是静态类");
		}
	}
}

创建main方法来调用内部类中的方法

package com.xit.test;

import com.xit.interfaces.imp.NoteBookComputer;
import com.xit.interfaces.imp.NoteBookComputer.Cpu;

public class Test {
	public static void main(String[] args) {
		Cpu cpu = null;//外部类引用内部类
		NoteBookComputer nbc = new NoteBookComputer();
		cpu = nbc.new Cpu();
		cpu.handleDate();
		
	}
}

局部类

匿名类对象

匿名类对象就是没有名称类型的对象
匿名类对象经常作为接口或抽象类的实现
匿名类对象可减少接口或抽象类实现类的定义
匿名类对象一定属于它实现的父级类型

package com.xit;

import com.xit.interfaces.Computer;

public class Staff {
	public void useComputerWorking(Computer computer,double n,double m) {
		
		computer.useComputer(n, m);
	
	}
}

package com.xit.test;

import com.xit.Staff;
import com.xit.interfaces.Computer;

public class TestHiddenClassNamerObject {
	public static void main(String[] args) {
		
		Staff mark = new Staff();
		double a = 546.54,b = 54.484;
		mark.useComputerWorking(new Computer() {
			
			@Override
			public void useComputer(double a, double b) {
				// TODO Auto-generated method stub
				System.out.println(a+b);;
			}
		}, a, b);
		
	}
}

思考:
1.设计内部类的主要目的是什么?()
2.内部类如何进行创建有哪些限制?()
3.什么是局部类,与内部类有什么关系?(局部类是在方法内创建类)
4.匿名对象是什么,使用它有什么好处?(使用内部对象就不用给对象起名了)【匿名对象是没有名字的对象,好处是创建对象不需要用变量来接收】

静态代码块中的内容

静态代码块中允许访问静态属性
静态代码块中允许调用静态方法
静态代码块中允许定义局部变量及常量
静态代码块中允许定义局部类
静态代码块中不能访问实例属性和方法以及定义方法

package com.xzit;

public class Location {
	
	public static final int EAST;
	public static final int WAST;
	public static final int SOUTH;
	public static final int NORTH;
	
	
	
	/**
	 * 静态块
	 */
	static {
		EAST = 0;
		WAST = 1;
		SOUTH = 2;
		NORTH =3;
		display();
	}
	
	public static void display() {
		System.out.println("您的当前默认位置是 "+NORTH);
	}

}
package com.test;

import com.xzit.Location;

public class Test {
	public static void main(String[] args) {
		System.out.println(Location.NORTH);;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值