package org.westos.java9;publicclassDemo{publicstaticvoidmain(String[] args){
fu show =show();
System.out.println(show.a);
show.show();}/* public static fu show(){
return new zi(); //10 zi
}*//* public static fu show(){
zi zi = new zi();
return zi; //10 zi
}*//* public static fu show(){
fu zi = new zi();
return zi; //10 zi
}*//* public static fu show(){
return new fu(); //10 fu
}*/publicstatic fu show(){
fu fu =newfu();return fu;//10 fu}}classfu{int a=10;publicvoidshow(){
System.out.println("fu");}}classziextendsfu{int a=20;@Overridepublicvoidshow(){
System.out.println("zi");}}
package org.westos.java9;publicclassDemo{publicstaticvoidmain(String[] args){
jump show =show();
System.out.println(show.a);
show.show();}/* public static jump show(){
return new tiger(); //10 jump
}*//* public static jump show() {
tiger tiger = new tiger();
return tiger; // 10 jump
}*//* public static jump show() {
jump tiger = new tiger();
return tiger; // 10 jump
}*//* public static jump show() {
//jump jump = new jump(); //报错
return new jump(){
@Override
public void show() {
System.out.println("jumpjump");
}
}; // 10 jumpjump
}*/publicstatic jump show(){//jump jump = new jump(); //报错
jump tiger =newjump(){@Overridepublicvoidshow(){
System.out.println("jumpjump");}};//使用多态的形式去接收子类对象,因为是匿名内部类,所以子类的名称是未知的,所以不能使用子类去接收它return tiger;// 10 jumpjump}}interfacejump{int a=10;voidshow();}classtigerimplementsjump{int a=30;@Overridepublicvoidshow(){
System.out.println("jump");}}
七、链式编程
package org.westos.java9;publicclassDemo{publicstaticvoidmain(String[] args){show().show();//lian shi bian chen}publicstatic test show(){returnnewtest();}}classtest{publicvoidshow(){
System.out.println("lian shi bian chen");}}
A:案例演示
四种权限修饰符: private(私有的) , 默认 , protected(受保护的) , public(公共的)
B:结论
本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
private Y
默认 Y Y
protected Y Y Y
public Y Y Y Y
package org.westos.java9;classTest{publicstaticvoidmain(String[] args){//Wai.Nei nei = new Wai.Nei(); 报错//new Wai().show().show(); 报错newWai().show2();}}classWai{int a;privatestaticclassNei{publicvoidshow(){
System.out.println("nei");}}public Nei show(){
Nei nei =newNei();return nei;}publicvoidshow2(){newNei().show();}}
package org.westos.java9;classTest{publicstaticvoidmain(String[] args){
Wai.Nei nei =newWai.Nei();
nei.show();}}classWai{int a;publicstaticclassNei{publicvoidshow(){
System.out.println("nei");}}public Nei show(){
Nei nei =newNei();return nei;}publicvoidshow2(){newNei().show();}}
十七、成员内部类的面试题
package org.westos.java9;/*A:面试题
要求:使用已知的变量,在控制台输出30,20,10。*/classOuter{publicint num =10;classInner{publicint num =20;publicvoidshow(){int num =30;
System.out.println(num);//30
System.out.println(this.num);//20
System.out.println(Inner.this.num);//20
System.out.println(newOuter().num);//10
System.out.println(Outer.this.num);//10//System.out.println(Outer.num); //10 当 public static int num = 10;}}}classInnerClassTest{publicstaticvoidmain(String[] args){
Outer.Inner oi =newOuter().newInner();
oi.show();}}
package org.westos.java9;classtest{privateint a=90;publicvoidshow(){classnei{// int a=100;publicvoidshow(){
System.out.println(a);}}
nei nei =newnei();
nei.show();}}classdemo{publicstaticvoidmain(String[] args){//具体类newtest(){/* @Override
public void show() {
System.out.println("show");
}*/}.show();//90}}
package org.westos.java9;classtest{publicstaticvoidmain(String[] args){
demo a =newdemo(){int a=100;@Overridepublicvoidshow(){
System.out.println("a");}};
System.out.println(a.a);//50}}abstractclassdemo{int a=50;publicabstractvoidshow();}
二十二、匿名内部类中this关键字
A: 面试题
interface Inter {
public static final int a = 23 ;
}
public class Test {
public static void main(String[] args) {
new Inter() {
public void show() {
//this 代表匿名内部类
System.out.println(this.a);//23
}
}.show();
}
}
package org.westos.java9;/*A: 面试题*/interfaceInter{publicstaticfinalint a =23;publicabstractvoidshow();}publicclassTest{publicstaticvoidmain(String[] args){newInter(){@Overridepublicvoidshow(){//this 代表匿名内部类
System.out.println(this.a);//23}}.show();}}
package org.westos.java9;/*A: 面试题*/interfaceInter{publicstaticfinalint a =23;publicabstractvoidshow();}publicclassTest{publicstaticvoidmain(String[] args){newInter(){int a=90;@Overridepublicvoidshow(){//this 代表匿名内部类
System.out.println(this.a);//90}}.show();}}
二十三、匿名内部类的面试题
A:面试题
按照要求,补齐代码
interface Inter {
void show();
}
class Outer {
//补齐代码
}
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
要求在控制台输出”HelloWorld”
package org.westos.java9;/*A:面试题
按照要求,补齐代码*/interfaceInter{voidshow();}classOuter{//补齐代码publicstatic Inter method(){returnnewInter(){@Overridepublicvoidshow(){
System.out.println("HelloWorld");}};}}classOuterDemo{publicstaticvoidmain(String[] args){
Outer.method().show();}}/*
要求在控制台输出”HelloWorld”*/