12.JAVA基础(接口)

12.JAVA基础(接口)

接口

接口用关键字interface表示
class定义类
interface定义接口
类实现接口 实现接口关键字:implements


接口的成员:
成员变量:只能是常量,并且是静态
成员方法:只能是抽象方法,必须是public权限的
构造方法:没有构造方法、
总结:建议手动给上默认自带的修饰符
例:

package com.yige.interfaces;

interface Inter{
	public int num = 10;
	public final static int NUM2 = 20;
	
	// public Inter(){}
	
	// public void show(){};
	
	// abstract void show();
	// void show();
	
	public abstract void show();
}

// 实现接口的类命名:接口名+Impl
class InterImpl implements Inter{
	public void show(){
		System.out.println("show");
	}
}

public class InterfaceDemo {
	public static void main(String[] args) {
		Inter i = new InterImpl();
		System.out.println(i.num);
		System.out.println(i.NUM2);
		// i.num = 30;
		
		System.out.println(Inter.num);
		System.out.println(Inter.NUM2);
	}
}

类与类:是继承,只能多层继承,不能多继承
类与接口:实现关系,可以单实现,也可以多实现,同时还能继承一个类
例:

interface Father{
	public abstract void show();
}

interface Mather{
	public abstract void show2();
}

class Son implements Father,Mather{
	public void show(){
		System.out.println("矿");
	}
	
	public void show2(){
		System.out.println("黄金");
	}
}

public class InterfaceDemo2 {
	public static void main(String[] args) {
		Son s = new Son();
		s.show();
		s.show2();
	}
}

包其实就是文件夹
命名规则:域名反写+分类主题名
作用:
1.对类进行分类管理
*按照功能分
增 com.yige.add StudentAdd.java



*按照模块分
学生com.yige.student StudentAdd.java StudentDel.java
老师com.yige.teacher
2.不同包中可以有相同的类名
package 包名
多级包用.分开
com/yige/interface
1.package语句必须定义在程序的第一条代码
2.package语句在一个Java文件中只能有一个
3.可以没有package,代表没有包名

我们用eclipse开,一般不用去动他,让他自动生成就可以了,但是你在写代码的时候,千万不要写在这个语句前面


导包:
我们可以通过导包来使用其他包下的功能
导包关键字:import
格式:import包名;
1.包名写到类名(推荐使用)
2.包名后面跟*


权限修饰符:
在这里插入图片描述
权限排序(从大到小)
public>protected>默认>private

修饰符分三种:
权限修饰符:public protected 缺省的 private
状态修饰符:static ,final
抽象修饰符:abstract


内部类

把类定义在其他类的里面,这个类就称为内部类
使用场景:在描述事物时,事物内部还有事物,而这个内部的事物还能直接访问外部事物的内容,那么这个时候就可以将这个事物通过内部类描述
内部类特点:
1.内部类可以直接访问访问外部类的成员,包括私有
2.外部类要访问内部类的成员,要创建对象

内部类根据位置不同主要分为两种
1.成员内部类:在成员位置定义的类
访问格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象
成员内部类可以加上修饰符:

  1. private封装,保证数据的安全性
  2. static方便访问数据
    被静态修饰的成员内部类只能访问外部类的静态成员
    访问格式:外部类名.内部类名 对象名 = new 外部类名.内部类对象()
class Outer2{
	public int num = 10;
	
	class Inner{
		public int num = 20;
		public void show(){
			int num = 30;
			System.out.println(num);
			System.out.println(this.num);
			// System.out.println(new Outer2().num);
			// 通过外部类名限定this对象
			System.out.println(Outer2.this.num);
		}
	}
}

public class InnerClassDemo2 {
	public static void main(String[] args) {
		Outer2.Inner in = new Outer2().new Inner();
		in.show();
	}
}

2.局部内部类

  1. 可以直接访问外部类的成员
  2. 通过创建内部类对象,调用内部类方法
  3. 局部内部类访问局部变量,这个变量会变成最终的,也就是常量
class Outer{
	private int num = 10;
	
	public void show(){
		int num2 = 20;
		
		class Inner{
			public void method(){
				System.out.println(num);
				System.out.println(num2);// 20
				// System.out.println(20);
				
				// num2 = 30;
			}
		}
		
		new Inner().method();
	}
}

public class InnerClassDemo {
	public static void main(String[] args) {
		Outer o = new Outer();
		o.show();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值