JAVA学习笔记之形式参数,权限访问和内部类问题

来源:互联网 发布:淘宝店铺dw软件 编辑:程序博客网 时间:2024/05/20 17:24
JAVA学习笔记之形式参数,权限访问和内部类问题
1.形式参数
 数据类型分为基本类型(四类八种)和引用类型(类,接口,数组),形式参数也分为基本类型和引用类型,两者有区别。
 形式参数的基本类型为:
      char; byte,short,int,long; double,float; boolean;
     引用类型:
      A,数组(实质上是该数组对象的引用,即地址值)
      B,类(实质上是该类对象(或子类对象)的引用,即地址值)
      C,接口(实质上是该接口的实现类对象的引用,即地址值)
      D,抽象类(实质上是该抽象类子类对象的引用,即地址值)
例如:
 interface Person{
  public abstract sleep();
 }
 class XiaoMing implements Person{
  public void sleep(){
   System.out.println("小明站着睡觉!");
  }
 }
 class PersonDemo{
  public void Test(Person p){
   p.sleep;
  }
 }
 class ArgsDemo{
  public static void main(String[] args){
   PersonDemo pd = new PersonDemo();
   Person p = new XiaoMing();//在这里我们对需要出送的形式参数
   pd.Test;    //进行实例化,真正传输的是对象的引用;
  }
 }
2.返回值问题
 返回值:
  基本类型:char; byte,short,int,long; double,float; boolean;
    返回的是改基本类型的数据值
    例如:
     class Demo{
      public static void main(String[] args){
       System.out.println(add(1,2));
       
       public static int add(int a,int b){
        return a+b;
       }
      }
     }
  
  引用类型:数组,类,抽象类,接口
   返回值是类名:该类对象(或子类对象)的引用,即地址值
   返回值是抽象类:是该抽象类子类对象的引用,即地址值
   返回值是接口:该接口的实现类对象的引用,即地址值
   例如:
    interface Person{
     public void sleep();
    }
    
    class XiaoMing implements Person{
     public void sleep(){
     System.out.println("小明站着睡");
     }
    }
    class Demo{
     public Person method(){
      Person p = new XiaoMing();
      return p;
     }
    }
    public class Test{
     public static void main(String[] args){
      Demo d = new Demo();
      Person p = d.method();
      p.sleep();
     }
    }
3.权限访问
 在JAVA中权限访问可以通过权限访问控制关键词进行操作————public,默认,protected,private;它们的具体访问权限控制如下:
       本类     同一个包下的类   不同包下的子类  不同包下的无关类
  private    yes    no     no      no
  默认(什么都不写) yes    yes     no      no
  protected   yes             yes         no      no
  public    yes             yes     yes      yes
   
  注意:四种权限修饰符只能有一种存在 
4.内部类
 定义:顾名思义,内部类就是定义在类内部的类
 分类:成员内部类,局部内部类,匿名内部类
 内部类关键词限定:相对于普通的类来说,内部类可以被private,static修饰
 A.成员内部类
  位置:位于类中的成员位置
  创建方法:外部类名.内部类名 对象名 = new 外部类对象.内部类对象;
   static修饰时:外部类名.内部类名 对象名 = new 外部类类名.内部类对象;
  例子:
   class Outerr {
    public int num = 10;
    private class Inner {
     public int num = 20;
     public void show() {
      int num = 30;
      System.out.println(num);//num
      System.out.println(this.num);//this.num
      System.out.println(new Outerr().num);//或者Outer.this.num
     }
    }
    public void method() {
     Inner i = new Inner();
     i.show();
     }
   }
   class InnerClassTest {
    public static void main(String[] args) {
     Outerr o = new Outerr();
     o.method();
    }
   }
 B.局部内部类
  位置:位于类中方法中,可以直接访问外部类成员,包括私有;在成员。
  注意:局部内部类访问局部变量必须加final修饰,因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立马从堆内存中消失,还要使用那个变量。为了让数据还能继续被使用,就用fianl修饰,这样,在堆内存里面存储的其实是一个常量值。
   
  例子:
   class Outer{
     private int num = 30;
     public void show(){
      final int num = 40;
      class Inner{
       public void function(){
        System.out.println(num);
        System.out.println(new Outer().num);
       }
      }
      Inner i = new Inner();
      i.function;
     }
   }
   public class InnerClassDemo{
    public void main(String[] args){
    Outer o = new Outer();
    o.show;
    }
   }
 C.匿名内部类
  位置:位于类中方法中,是一种没有名字的局部内部类,就是内部类的简化写法
  前提:存在一个类或者接口;这里的类可以是普通类,也可以是抽象类
  格式:
   new 类名或接口名(){
    重写方法;
   };
   
  本质:继承类或实现接口的子类匿名对象
  例子:
   interface Inter{
    void show();
   }
   class Outer{
    public static Inter method(){
     retrun new Inter(){
      public void show(){
       System.out.println("HelloWorld");
      }
     };
    }
   }
   public class InnerClassTest{
    public static void main(String[] args){
     Outer.method().show();
    }
   }
0 0
原创粉丝点击