Java进阶04(static关键字、final关键字、包、权限修饰符、内部类、引用数据类型作为方法的参数/返回值、链式编程)

Part01:static关键字

1、static关键字:
作用:一般用来修饰类中的成员;被static修饰的成员属于类,不属于单个对象;
如果一个类的成员变量被static修饰了,那么想访问这个成员,可以直接通过类名.成员变量;
2、什么时候类的成员需要用static修饰呢?
如果这个成员,他不属于某一个对象,而是属于类,属于所有对象共有的(每个对象都一样),那么需要加上static修饰;
如:中国人类的国籍
3、被static修饰后成员的特点:
被static修饰的成员又叫类成员,不叫对象的成员;
调用:
类名.静态成员变量名(推荐);
//也可以对象.成员变量名(不建议,警告);
静态方法:类名.静态成员方法名(参数);
空间:
普通成员变量,每一个对象都有自己的空间;而静态成员变量,存在方法区中,在内存中只有一份空间,任何对象对这份空间中的值做了修改会影响所有对象访问的结果(被多个对象共享);

4、静态的多态性:
多态调用静态成员货静态方法的时候,没有多态性;因为静态属于类不属于对象,而多态是对象的多态;

Part02:final关键字

1、final关键字:
final可以修饰类,成员变量,成员方法,局部变量(基本类型,引用类型)
2、final修饰类:
不能被继承,可以继承其他类;
3、final修饰成员变量:
被final修饰的成员变量,必须在创建对象之前有确定的值(初始化);//final int a=100;
被final修饰的成员变量,只能赋值一次;
4、final修饰的成员方法(最终方法):
被final修饰的成员方法,不能被子类重写;
5、final修饰的基本类型局部变量:
被final修饰的基本类型局部变量,只能赋值一次(可以在定义时直接赋值或先定义再赋值);
6、final修饰的引用类型局部变量:
被final修饰的引用类型局部变量,只能赋值一次,但是引用类型所指向的对象中的内容是可以改变的;//例:final Dog dog=new Dog()只能赋值一次;dog.age可以改变;

Part03:包

1、包的本质?
包的本质是文件夹,在包中是以 . 来区分上下级文件夹关系;
2、为什么要用包?
分类管理文件
3、包的声明:
格式:package 包名;
作用:指示 某个类 在哪个包类;
包的声明必须和类所在的实际位置保持一致;
4、包的导入:
用来告诉编译器我们要使用的类在哪一个包类;
格式:import 包名.类名;
5、全限定类名:
格式:包名.类名//例:java.util.ArrayList=。。。;
使用全限定类名可以不用导包;

Part04:权限修饰符

Java中四个权限修饰符:在这里插入图片描述

Part05:内部类

1、内部类:
根据内部类定义位置不同的分类:
成员内部类:定义在内中方法外;
在其他类中创建该类的对象 固定格式:
外部类名.内部类名 变量名=new 外部类( ).new 内部类( );
局部内部类:定义在方法中
在其他类中,是无法使用的,只能在局部位置使用;
2、静态代码块:
代码块,在成员位置,使用大括号括起来的一堆代码;
例:

public class  Person{
                    //静态代码块
                    static{
                         代码块;
                     }
                    public void show( ){
                     }
                 }

特点:
当我们使用到这个类(创建类的对象或使用类的静态成员)的时候,JVM自动执行这个类中的静态代码块;
只会执行一次,而且在第一次使用到这个类的时候执行,第二次使用就不会执行了;
优先级很高,比构造方法高,比main方法高;
作用:用来初始化类的某些功能,例如mysql数据库驱动的加载;

2、匿名内部类:
是一种特殊的语法;
用来快速创建抽象类的子类对象;
//第三种,常用
//多态,父类类型接受匿名子类对象

AbstractDemo abstractDemo=new AbstractDemo() {
    @Override
    public void eat() {
        System.out.println("fff");
    }
  @Override
    public void sleep() {
        System.out.println("sss");
    }
};
abstractDemo.eat();
abstractDemo.sleep();

用来快速创建接口的实现类对象;

new USB() {
    @Override
    public void open() {
    }
@Override
public void close() {
}
}.重写后的方法();

//多态接收;

USB usb=new USB() {
    @Override
    public void open() {

    }
@Override
public void close() {

    }
};
usb.open();
usb.close();

Part06:引用数据类型

1、类作为方法的参数或返回值:
我们需要传递或者返回的,应该是该类的对象(不是该类,也不是别的类的对象);
2、抽象类作为方法的参数和返回值:
我们需要传递或返回的,是抽象类的子类对象;
例: return new Animal( ){
public void eat( ){…} //创建匿名子类,实现方法;
};
3、接口作为方法的参数和返回值:
我们需要传递或返回的,是接口的实现类对象;

Part07:链式编程

public class MethodDemo {
    public static void main(String[] args){
        StringBuilder sb=new StringBuilder();
        //链式编程,无限
        sb.append(12).append("aaa").append(true);
        //另外一种形式的链式编程,有限个
        getName().substring(5).substring(2).charAt(0);
    }
    public static String getName(){
        return "asdfghjkl";
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值