内部类
package com.zhan.base05Oop.demo08;
public class Test17 {
// 四种内部类
public static void main(String[] args) {
Outer outer=new Outer(); // 创建外部类的对象
// 类型 对象 = 外部对象.new 内部类();
Outer.Inner inner = outer.new Inner(); // 通过外部类的对象来实现内部类对象的创建
outer.out();
inner.in();
inner.getAge();
inner.getMethod();
}
}
package com.zhan.base05Oop.demo08;
public class Outer {
// 外部类
private int age=19;
public void out(){
System.out.println("这是外部类的公有方法");
}
private void out1(){
System.out.println("这是外部类的私有方法");
}
// 1. 成员内部类
public class Inner{ // 成员内部类
public void in(){
System.out.println("这是内部类的公有方法");
}
// 成员内部类可以获得外部类的私有属性,私有方法
public void getAge(){
System.out.println(age);
}
public void getMethod(){
out1();
}
}
// 2. 静态内部类 静态内部类不能获取外部类的非静态属性和非静态方法,加载时间先后!
public static class Inner1{
}
// 3. 局部内部类: 方法里面定义类
public void method(){
class Inner2{
}
}
// 4.局部内部类,在 Test17_01 演示
}
package com.zhan.base05Oop.demo08;
public class Test17_01 {
public static void main(String[] args) {
// 4. 匿名内部类
// 匿名:没有名字, 不将实例化的对象保存到变量中,说人话就是初始化一个类的对象却不赋予名字
// 示例一
new A().print1();
// 示例二
new UserService() { // 示例二 可以返回一个对象(实例化),但我这里为了演示内部类没有写出来
@Override
public void hentai() {
System.out.println("hentai");
}
}.hentai(); // 注意 :" ; "
// 实例化一个对象
UserService userService =new UserService() { // 示例二 可以返回一个对象,但我这里为了演示内部类没有写出来
@Override
public void hentai() {
System.out.println("hentai");
}
}; // 注意 :" ; "
userService.hentai();
}
}
class A{
public void print1(){
System.out.println(1);
}
}
interface UserService{
void hentai();
}
标签:内部,17,void,System,hentai,public,out
From: https://www.cnblogs.com/zhanjianhai/p/17113079.html