形式参数和返回值问题
形式参数
基本类型:
形式参数的改变对实际参数没有影响(String是引用类型和基本数据类型的效果一样String s ="abc")
引用类型:
具体类:如果形式参数是一个具体类,那么需要创建该类对象
抽象类:如果形式参数是抽象类的情况,那么需要自定义一个抽象类的子类,来进行实例化(创建对象)!,创建对象的实质:抽象类多态!
接口:那么需要自定义一个接口的子实现类,然后通过接口多态的形式给接口进行实例化!(接口多态!
由于接口不能实例化,需要定义接口的子实现类)
返回值类型
基本类型
引用类型
具体类:直接返回该类对象(实际开发中使用的是匿名对象)
抽象类:返回值如果是抽象类,需要的返回是该抽象类的子类对象
接口:返回值如果是接口类型,需要的是返回该接口的子实现类对象,通过子实现类进行实例化。
3:内部类的概述及访问特点
概念: 在一个类中定义另一个类,那么把这种情况称为内部类
内部类是直接可以访问外部类的成员,无论是局部内部类还是成员内部类(一般指非静态)包括私有
外部类想要访问内部类的成员,必须通过创建内部类的对象访问该内部类的成员
格式:
外部类名.内部类名.对象名 = 外部类对象.内部类对象
class Outer{
//外部类的成员变量
public int num = 100 ;
private int num = 20 ;//内部类可以访问私有外部类成员变量
//内部类
class Inner{
//内部类的成员方法
public void show(){
System.out.println(num);
}
}
//外部类的成员方法
public void method(){
//创建内部类对象
Inner i = new Inner() ;
i.show() ;
}
}
4:内部类的分类
成员内部类:在外部类的成员位置
局部内部类:在外部了的局部位置定义的这个类
关系如下:
//外部类
class Outer2{
//外部类的成员变量
public int num = 100 ;
//成员内部类
class Inner2{
}
//外部类的成员方法
public void method(){
//局部位置
class Inner2{
}
}
}
匿名内部类是内部类的简化版格式。
前提条件:
必须存在一个接口或者是一个类(可以是具体类,也可以是一个抽象类)
书写格式:
new 接口名或者类名(){
方法重写;
}
匿名内部类面试题:
按照要求,补齐代码
interface Inter { void show(); }
class Outer { //补齐代码 }
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
要求在控制台输出”HelloWorld”
/*按照要求,补齐代码
interface Inter { void show(); }
class Outer { //补齐代码 }
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
}
}
要求在控制台输出”HelloWorld”*/
package org.west_09_匿名内部类面试题;
interface Inter {
public abstract void show();
}
class Outer { //补齐代码
public static Inter method() {
//返回值是一个接口
return new Inter() {
@Override
public void show() {
System.out.println("HelloWorld");
}
};
}
}
class OuterDemo {
public static void main(String[] args) {
Outer.method().show();
/* method能被类名调用 说明方法是静态的(static)
method能调用show 说明返回一个对象*/
}
}