JAVA中方法的参数类型以及返回值类型、内部类

方法的参数类型以及返回值

  1. 如果一个方法的形参跟返回值类型,需要一个类 类型,那么传入或者返回该类的对象
public class MyTest {
    
    

    public static void main(String[] args) {
    
    

        Student student = new Student();
        show(student,"张三",18);
        System.out.println(student.name);
        System.out.println(student.age);
    }
    public static Student show(Student student,String name,int age){
    
    
        student.name=name;
        student.age=age;
        return  student;
}
    }

class  Student{
    
    
    String name;
    int age;
    }
  1. 如果一个方法的形参跟返回值类型需要一个抽象类类型,那么传入或者返回该抽象类的子类对象
public class MyTest1 {
    
    
    public static void main(String[] args) {
    
    
        Cat cat = new Cat();
       show(cat,"大橘",3);
        System.out.println(cat.name);
        System.out.println(cat.age);
    }
     public static Animal show(Cat cat, String name,int age){
    
    
        cat.name=name;
        cat.age=age;
        return cat;
    }
}
abstract  class Animal{
    
    
    String name;
    int age;
    public abstract void eat();
    public abstract void sleep();
}
class Cat extends Animal{
    
    
   
    @Override
    public void eat() {
    
    
        System.out.println("猫吃小鱼干");
    }

    @Override
    public void sleep() {
    
    
        System.out.println("猫睡觉");
    }
}
  1. 如果一个方法的形参跟返回值需要一个接口类 类型,那么传入或者返回该接口的子类对象
public class MyTest2 {
    
    
    public static void main(String[] args) {
    
    
       A a= getInterface();
        System.out.println(a.num);
    }

    public static A getInterface() {
    
    
        return new B();
    }
}

interface A {
    
    
    public static final int num = 20;

    public abstract void show();
}

class B implements A {
    
    

    @Override
    public void show() {
    
    
        System.out.println("这是重写后的show方法");
    }
}
权限修饰符
本类 同一个包下(子类和无关类) 不同包下(子类) 不同包下(无关类)
private(私有的) Y
默认的 Y Y
protected(受保护的) Y Y Y
public(公共的) Y Y Y Y

内部类

概述: 把类定义在其他类的内部,这个类就被称为内部类

按位置分类:

  1. 成员内部类:在成员位置定义的类
public class Outer {
    
    
     class Inner{
    
    
         
     }
}
  1. 局部内部类:在局部位置定义的类
public class Outer {
    
    
   public void show(){
    
    
       class  Inner{
    
    
       }
   }
}

局部内部类访问局部变量特点:

  1. 可以直接访问外部类的成员
  2. 可以创建内部类的对象,通过对象调用内部类方法,来使用局部内部类功能
  3. 局部内部类访问局部变量必须用final修饰(因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立马从堆内存中消失,还要使用那个变量。为了让数据还能继续被使用,就用fianl修饰,这样,在堆内存里面存储的其实是一个常量值。)
public class Demo {
    
    
    public static void main(String[] args) {
    
    

        Outer outer = new Outer();
        outer.show();
    }
}
class  Outer{
    
    
    private int a=10;
    public void show(){
    
    
        int b=20;
        class Inner{
    
    
            public void method(){
    
    
                System.out.println(a);
                System.out.println(b);
            }
        }
        Inner inner = new Inner();
        inner.method();
    }
}

匿名内部类

概述: 就是局部内部类的简写。
前提: 存在一个类或者一个接口,这里的类可以是具体的类也可以是抽象类
本质: 是继承了该类或者是实现了该接口的子类匿名对象

//实现抽象类的匿名对象
public class Demo {
    
    
    public static void main(String[] args) {
    
    
        new A() {
    
    
            @Override
            public void show() {
    
    
                System.out.println("show方法");
            }
        }.show();
    }
}
    abstract class A{
    
    
    public abstract void show();
}
//实现接口的匿名内部类
public class Demo{
    
    
    public static void main(String[] args) {
    
    
        new In() {
    
    
            @Override
            public void show() {
    
    
                System.out.println("show方法");
            }
        }.show();
    }
}
interface In{
    
    
    public abstract void show();
}

猜你喜欢

转载自blog.csdn.net/weixin_42093672/article/details/102731554