面向对象
1、接口interface
1、定义:不是class类,没有构造方法,其中没有实例化的方法,只有抽象的方法,且里面定义的常量不可以被改变。
2、用法:实现定义一个接口,public interface +名字{},然后可以在里面定义一些抽象的方法,子类通过implements实现多个接口,并且必须重写这些接口中的所有方法。
3、快捷键:子类快速定义接口中的方法Ctrl+i或Alt+Ins
例:
2、内部类
1、定义在类里面的小类,有很多种内部类,如成员内部类:
package day8;
public class Test1 {
private int app=10;
public void eat(){
System.out.println(app);
}
public class Inner{
public void eat2(){
System.out.println("调用内部类");
System.out.println(app);
}
}
}
还有局部内部类:
public class Test1 {
private int app=10;
public void eat(){
//局部内部类,该方法的变量在局部内部类里面相当于是成员变量
class Inner{
//里面也可以写方法
}
System.out.println(app);
}
//成员内部类
public class Inner{
public void eat2(){
System.out.println("调用内部类");
System.out.println(app);
}
}
}
还有Test2这种内部类:
package day8;
public class Test1 {
private int app=10;
public void eat(){
//局部内部类,该方法的变量在局部内部类里面相当于是成员变量
class Inner{
//里面也可以写方法
}
System.out.println(app);
}
//成员内部类
public class Inner{
public void eat2(){
System.out.println("调用内部类");
System.out.println(app);
}
}
}
//一个类中最多只能有一个public类
//下面的这个类可以用来进行调试,这也是属于内部类的一种
class Test2{
public static void main(String[] args) {
Test1 test1 = new Test1();
test1.eat();
Test1.Inner inner = test1.new Inner();
inner.eat2();
}
}
3、匿名类
定义:创建对象时不创建具体的名字,直接调用其它类中的方法或访问变量(访问变量时需要再重新定义一个变量)
package day8;
public class Demo02 {
public static void main(String[] args) {
Test1 test1 = new Test1();
test1.eat();
// test1.eat2(); 会报错,不能直接调用内部类中的方法
Test1.Inner inner = test1.new Inner();
inner.eat2();/*这样就可以获得Test1里面的prviate的变量
这也是内部类最好的地方*/
//匿名类
new Test1().eat();
int age = new Test1().age; /*不能只写成
new Test1().age;
应该用age赋值*/
}
}