接口
接口用关键字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.成员内部类:在成员位置定义的类
访问格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象
成员内部类可以加上修饰符:
- private封装,保证数据的安全性
- 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.局部内部类
- 可以直接访问外部类的成员
- 通过创建内部类对象,调用内部类方法
- 局部内部类访问局部变量,这个变量会变成最终的,也就是常量
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();
}
}