11.Java语言方法定义与重载、权限修饰符、final关键字、内部类

版权声明:原创,转载请说明,谢谢! https://blog.csdn.net/ajia5216/article/details/82702473

方法定义与重载

将相同的代码进行封装,通过调用使用,可以重用代码

方法的完整定义方式

       修饰符 返回值类型 方法名(参数列表){

                方法体

                return 返回值

       }

 

return :

        1,为了将返回值交给调用处

        2,表示方示结束

返回值类型:计算结果的数据类型 ,如果没有计算机结果(不需要返回)写void

        1,基本基本

                   byte short int long float double char boolean都可以作为返回值类型

        2,引用类型

                  String..

注意事项:

        1,定义位置类中方法外

        2,参数列表,有未知量

        3,返回值类型,方法内要return 返回值; 调用可以定义变量接收

        4,返回值类型,必须跟返回的结果一致

方法的调用流程

                    1,从调用处找到这个方法

         2,传参,将调用处的实际数据传给参数列表

         3,执行方法体计算得到结果

         4,通过return 返回值; 将结果交给调用处

方法的三种调用格式

       直接调用

       赋值调用

       打印调用      

方法重载

       减少程序员记忆有负担,在同一个类中,多个功能一样的方法写成方法名相同。参数列表必须不同

            参数类型不同

            参数个数不同

            参数顺序不同

            参数的变量名不同不行

 

权限修饰符

在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限,

public:公共的。 protected:受保护的 default:默认的 private:私有的

public   >  protected  >    默认的 >  private

a).public   公有的,任何地方都可以访问

b).private   私有的,只有本类可以访问

c).protected 受保护的, 同包才可以访问 ,强调的是给子类访问

d).不写     默认的,   同包才可以访问

建议这样使用权限:

成员变量使用 private ,隐藏细节。

构造方法使用 public ,方便创建对象。

成员方法使用 public ,方便调用方法。

不加权限修饰符,其访问能力与default修饰符相同

final关键字

final : 关键字表示的最终的,最后的程序员,最牛的

用来修饰:类、方法、成员变量、局部变量

final修饰类:

被final修饰的类,不能有子类,称为,”太监类”,final 与abstract 不能同时修饰类

final修饰方法:

不以被子类覆盖重写

final修饰局部变量:

被final修饰后,只能赋值一次,不能再更改。

final修饰成员变量:

初始化方式有两种,只能二选一:

一:显示初始化(直接赋值)

二:构造方法初始化

静态的成员变量(静态常量)必须直接赋值

例如:public static final double PI = 3.14;

静态常量明命名:每个单词大写,用 ”_” 符号分开

final修饰引用类型变量

被final修饰后,只能指向一个对象,地址不能再更改。但是不影响对象内部的成员变量值的 修改

public class FinalDemo2 {
    public static void main(String[] args) {
        // 创建 User 对象
        final User u = new User();
        // 创建 另一个 User对象
        u = new User(); // 报错,指向了新的对象,地址值改变。
        // 调用setName方法
        u.setName("张三"); // 可以修改
    }
}

内部类

将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类。

成员内部类:

定义在类中方法外

定义格式:

class 外部类 {

          class 内部类{

          }

}

public class Person {
    private boolean live = true;
    class Heart {
        public void jump() {
            // 直接访问外部类成员
            if (live) {
            System.out.println("心脏在跳动");
            } else {
                System.out.println("心脏不跳了");
            }
        }
    }
    public boolean isLive() {
        return live;
    }
    public void setLive(boolean live) {
        this.live = live;
    }
}

访问特点: 

内部类可以直接访问外部类的成员,包括私有成员。 外部类要访问内部类的成员,必须要建立内部类的对象。

创建内部类对象格式:

外部类名.内部类名 对象名 = new 外部类型().new 内部类型();

public static void main(String[] args) {
    // 创建外部类对象
    Person p = new Person();
    // 创建内部类对象
    Heart heart = p.new Heart();
    // 调用内部类方法
    heart.jump();
    // 调用外部类方法
    p.setLive(false);
    // 调用内部类方法
    heart.jump();
}

局部内部类

类中方法中

public class 外部类名{

           public void method(){

                     class 局部内部类{

                                //

                     }

                      //使用.

         }

}

 

匿名内部类:

匿名内部类必须继承一个父类或者实现一个父接口

new 父类名或者接口名(){
    // 重写所有抽象方法
    @Override 
    public void method() {
         // 执行语句
    } 
};

new 抽象类/接口(){

//重写所有的抽象方法

}.成员方法名();

示例:

public class Demo {
    public static void main(String[] args) {
        new Thread(){
            @Override
            public void run() {
                System.out.println("这是一个匿名内部类");
            }
        }.start();
    }
}

猜你喜欢

转载自blog.csdn.net/ajia5216/article/details/82702473