//Java 接口 内部类 静态内部类
一:
public class Demo {
public static void main(String[] args) {
// a:接口用关键字interface表示
// interface 接口名 {}
// b:类实现接口用implements表示
// class 类名 implements 接口名 {
// 重写方法;
// }
// c:接口不能实例化
// 那么,接口如何实例化呢?
// 按照多态的方式来实例化。
// d:接口的子类
// a:可以是抽象类。但是意义不大。
// b:可以是具体类。要重写接口中的所有抽象方法。(推荐方案)
//类和接口之间的关系叫实现关系 implements
//类和类之间的关系叫继承关系 extends
MyInterface1 inter1 = new MyInterface1Impl();
//和抽象类一样,无法直接创建实例对象,需要使用多态的方式来完成!!
//接口的子类
//1,抽象类,可以不重写接口的抽象方法
//2,普通类,必须重写接口的所有抽象方法
//3,接口,接口与接口之间是继承关系,而且支持多继承!
// a:类与类:
// 继承关系,只能单继承,可以多层继承。
// b:类与接口:
// 实现关系,可以单实现,也可以多实现。
// 并且还可以在继承一个类的同时实现多个接口。
// c:接口与接口:
// 继承关系,可以单继承,也可以多继承。
}
}
public class Demo {
public static void main(String[] args) {
// A:内部类概述:类里面还有一个类
// B:内部类访问特点
// a:内部类可以直接访问外部类的成员,包括私有。
// b:外部类要访问内部类的成员,必须创建对象。
// 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
// C:案例演示
// 内部类及其访问特点
}
}
二:
/**
- 外部类
- @author
*/
class OuterClass{
private int a = 1;
/**
* 内部类
* @author qiuzhiwei
*
*/
class InnerClass{
//innerShow方法的调用必须使用InnerClass类的对象
//使用InnerClass类的对象,必须通过OuterClass类的对象
public void innerShow(){
// 内部类可以直接访问外部类的成员,包括私有。
System.out.println(a);
}
}
public void outerShow(){
//通过内部类对象来调用
//外部类.内部类 对象名 = new 外部类对象.内部类对象;
// OuterClass.InnerClass innerClass = new OuterClass().new InnerClass();
// OuterClass.InnerClass innerClass = this.new InnerClass();
InnerClass innerClass = new InnerClass();
innerClass.innerShow();
}
}
三:
public class Demo {
public static void main(String[] args) {
// A:内部类概述:类里面还有一个类
// B:内部类访问特点
// a:内部类可以直接访问外部类的成员,包括私有。
// b:外部类要访问内部类的成员,必须创建对象。
// 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
// C:案例演示
// 内部类及其访问特点
}
}
四:
/**
- 外部类
- @author
*/
class OuterClass{
private int a = 1;
/**
* 内部类
* @author qiuzhiwei
*
*/
class InnerClass{
//innerShow方法的调用必须使用InnerClass类的对象
//使用InnerClass类的对象,必须通过OuterClass类的对象
public void innerShow(){
// 内部类可以直接访问外部类的成员,包括私有。
System.out.println(a);
}
}
public void outerShow(){
//通过内部类对象来调用
//外部类.内部类 对象名 = new 外部类对象.内部类对象;
// OuterClass.InnerClass innerClass = new OuterClass().new InnerClass();
// OuterClass.InnerClass innerClass = this.new InnerClass();
InnerClass innerClass = new InnerClass();
innerClass.innerShow();
}
}
五:本质:就是一个接口的子类对象,或者是一个类的子类对象
通过对象调用方法 .show();
public class Demo09 {
public static void main(String[] args) {
//匿名内部类
// new 类名或接口名(){
// 重写方法;
// };
//匿名内部类对象
new MyInterface1(){
public void show(){
System.out.println("hello1");
}
}.show();
System.out.println("--------------");
//本质:就是一个接口的子类对象,或者是一个类的子类对象
//通过对象调用方法 .show();
new MyClass1() {
public void show(){
System.out.println("hello2");
}
}.show();
System.out.println("--------------");
new MyClass2(){
public void show(){
System.out.println("hello3");
}
}.show();
}
}
interface MyInterface1 {
public abstract void show();
}
abstract class MyClass1{
public abstract void show();
}
class MyClass2{
public void show(){
System.out.println("hello1");
}
}
这篇博客详细讲解了Java中的接口和内部类。首先介绍了接口的定义、实现方式及其实例化方法,强调了接口不能直接实例化,但可以通过多态方式实现。接着,讨论了类与接口的关系,包括单继承和多实现。对于内部类,博客解释了其概念,指出内部类可以直接访问外部类的所有成员,并展示了如何从外部类访问内部类的方法。最后,揭示了内部类的本质,可以看作是接口的子类或类的子类对象,并提供了匿名内部类的使用示例。
590

被折叠的 条评论
为什么被折叠?



