包--访问修饰符--final--static--代码块--抽象_abstract

包(package)

包本质上就是文件夹,作用是对类进行分类管理。

package 包名;          //多级包用.分隔,包名使用小写字母书写

不同包中的类可以重名

java.lang包下的类不用导包。
同一个包内的类不用导包

访问修饰符

Java中提供了4种权限访问修饰符(从小到大):private、缺省、protected、public

4种修饰符可以修饰以及类的成员(属性、方法、构造方法)。

  • 修饰类:只能使用public缺省
  • 修饰类的成员:private缺省protectedpublic都可以。

访问修饰符修饰类

public class A {

}

class B{

}

缺省权限的类只能在本包中使用。

public修饰的类可以在任何地方使用(所属的包,以及其他包(需要导包))。

访问修饰符修饰类的成员---类中定义的属性、方法

private、缺省、protected、public会影响所修饰的属性和方法的可见度(访问权限)。

1. 在类内部,4种访问权限修饰的成员都可以访问(指的是可以通过对象.属性名或者对象.方法名() 这种形式访问属性和方法)(this指代本对象)

2. 在同包的其他类中,缺省protectedpublic修饰的成员可以访问。(指的是可以通过对象.属性名或者对象.方法名()这种形式访问属性和方法)

3. 不同包的子类中,protectedpublic修饰的成员可以访问。(指的是可以通过对象.属性名或者对象.方法名()这种形式访问属性和方法)

4. 不同包的无关类public修饰的成员可以访问。(指的是可以通过对象.属性名或者对象.方法名()这 种形式访问属性和方法)

一般类都用public修饰。属性用private修饰,getter、setter用public修饰,构造方法一般使用 public修饰,方法一般是public,个别不想暴露的方法用private。

final关键字

final单词的含义是最终的,在Java中final可以修饰方法变量实例变量局部变量)。

final修饰类

final修饰类:说明类是最终的类,即类不能有子类。换句话说就是final类不能被继承

final修饰方法

final修饰方法:说明方法是最终的方法,即方法不能被子类重写

final修饰变量(实例变量、局部变量)

final修饰变量:说明变量是最终的,即变量的值不能发生变化。(如果变量没赋值,有一次赋值机 会)。

因为final修饰的变量,值不能发生变化,所以我们通常把final修饰的变量称为常量,变量名一般用纯大 写命名。

static关键字

static单词的含义是静态的。在Java中static可以修饰属性、方法、代码块、内部类。

static修饰属性

如果属性用static修饰,那么这个属性不再是实例变量,而是类变量。

目录

包(package)

访问修饰符

访问修饰符修饰类

访问修饰符修饰类的成员---类中定义的属性、方法

final关键字

final修饰类

final修饰方法

final修饰变量(实例变量、局部变量)

static关键字

static修饰属性

static修饰方法

静态方法中不能访问实例变量

static总结

代码块

局部代码块

初始化代码块:

初始化代码块的作用

初始化代码块的特点:

静态代码块

静态代码块的特点:

继承关系里,代码块执行顺序

抽象----abstract关键字

抽象类

抽象类的作用

抽象方法

抽象方法的作用

本文总结

类方法可以直接用   类名.属性名;访问  

实例变量,即实例的变量,有多少个对象就有多少个变量

类变量,即类的变量,这个类所有对象共用这个变量

如:将学生类的成员变量name设为static,那么所以的学生类对象都将是同名的

被static修饰的属性,既可用对象访问,也可以用类访问。类属性应该使用类去访问,不要使用对象去访 问(尽管可以)。

static修饰方法

如果方法用static修饰,那么这个方法不再是实例方法,而是类方法。

public static void staticMethod() {

        System.out.println("我是静态方法");

}

类方法可以直接用   类名.方法名();访问  

实例方法:实例的方法,即对象的方法。由对象来调用方法。

类方法:类的方法,这个类所有的对象共用这个方法

调用类方法时可能会没有提示

静态方法中不能访问实例变量

静态方法中,访问实例变量会报错。之所以报错是因为,静态方法是类方法,不是实例方法,因此 访问实例变量的时候,不知道是访问的是哪个对象的实例变量。
静态方法中,访问实例方法会报错。之所以报错是因为,静态方法中访问实例方法,不知道访问的 是哪个对象的实例方法。

静态方法中,不能使用this。this是一个代表当前方法调用者的对象。因为类通常是用类名调用 的,不是具体的对象,所以不能用this。

static总结

  1.  static修饰的属性和方法被所有对象共享,即可以被对象访问。
  2. static修饰的属性和方法可以被类访问。推荐使用类去访问静态属性和静态方法。
  3. 静态方法中只能访问静态属性和静态方法。

代码块

用{}括起来的代码叫做代码块。

在Java中一共3种代码块: 局部代码块    初始化代码块    静态代码块

局部代码块

定义在方法体中的代码块叫做局部代码块

如:if方法体,switch方法体

初始化代码块:

初始化代码块是定义在类中的代码块。它和属性、方法、构造方法属于是一个层级的东西。由于通常用 它来做初始化,所以叫做初始化代码块。

初始化代码块的作用

  1. 可以为属性赋值----等价于构造方法。(比构造方法更早执行
  2. 可以做公共初始化。----如果多个构造方法,他们有共同的代码,共同的代码可以提到初始化代码块 中。
 public class Person {
    private String name;
    private int age;
   
    public Person() {
        super();
        System.out.println("无参构造方法");
    }
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
        System.out.println("全参构造方法");
    }
    
    {
        name = "zhangsan";
         age = 20;
         System.out.println("这是一个初始化块!我 比 构造方法执行 先执行");
    }
   public void showInfo() {
      System.out.println("姓名: " + name + ",年龄:" + age);
     }
 }

初始化代码块的特点:

  1. 初始化代码块定义格式和方法类似,只不过只有{},没有参数,没有返回值
  2. 初始化代码块不能主动调用,创建对象的时候自动执行,先于构造方法执行。
  3. 一个类中可以有多个初始化代码块,写在上面的初始化代码块先执行。尽管可以定义多个,一般最 多定义一个。

静态代码块

用static修饰的代码块称为静态代码块。

静态代码块是类的代码块,随着类的加载而调用,因为类只会加载一次,所以静态代码块也只执行一 次。

静态代码块的特点:

  1. 静态代码块的书写格式和初始化代码块的格式类似,在前面加一个static关键字即可。
  2. 静态代码块不能主动调用,类加载的时候自动调用。因为类只加载一次,所以只调用一次。
  3. 静态代码块可以有多个,写在上面的先执行。一般最多只写一个。
  4. 静态代码块中不可以使用实例变量,不可以调用实例方法。
  5. 静态代码块比初始化代码块先执行。

继承关系里,代码块执行顺序

  • 在继承关系里,创建子类对象时,会先加载类,再创建对象。
  •                 所以父类和子类的静态代码块先执行

  • 加载类时,先加载父类,再加载子类。--- 类只有首次用的时候才加载,加载之后就一直在内存中。
  • 创建对象时,先执行父类的初始化代码块和构造方法,再执行子类的初始化代码块和构造方法。

抽象----abstract关键字

abstract单词的含义是抽象。它可以用来修饰方法,也可以用来修饰类。被abstract修饰的类称为抽象 类,被abstract修饰的方法称作抽象方法。

抽象类

抽象类最大的特点就是不能实例化对象,即不能创建对象。

public abstract class Animal {

}

抽象类的作用

有些时候,父类只是为了被子类继承,在用的时候,我们希望别人用子类,而不是用父类,这个时候, 我们就可以把父类定义成抽象类。

一个普通类能包含的内容,抽象类都能包含。

抽象类和普通类的唯一区别就是不能创建对象。---我不能创建对象,但是我东西可以被子类继承!

抽象方法

抽象方法:被abstract修饰的方法。

public abstract void method1();

抽象方法必须定义在抽象类中!

抽象方法不能有方法实现

抽象方法的作用

抽象方法是专门为多态设计的!专门设计用来被子类重写的

Animal做为动物类,它比较抽象,即使实现了eat方法,也会被子类重写,不如不实现。只定义出 来有这个一个方法,但不实现,由具体的子类来实现。

如果一个类继承于抽象类,那么必须实现抽象类中所有的抽象方法

或者自己也定义成抽象类,由自己的子类来实现抽象方法!

抽象类虽然不能创建对象,但是它可以借助子类创建对象,抽象类的引用指向子类创建对象

public class ClassTest {

        public static void main(String[] args) {

                 Animal a = new BosiCat();//抽象类Animal的引用a指向子类BosiCat创建的对象

                 a.eat();//调用子类实现的eat方法

        }

}

本文总结:

  1. 包的本质是文件夹。如果要使用的类是本包中的类,无需导包可以直接使用。如果要使用的类不是 本包中的类,需要导包,或者使用类的完整限定名。导包语法:import 包名.类名; 或者import 包 名.*; 位于java.lang包中的类无需导包。
  2. 属性通常使用private修饰,方法通常使用public修饰,不想对外暴露的方法使用private修饰。
  3. final修饰类,类不能被继承(不能有子类);final修饰方法,方法不能被子类重写;final修饰属性,属性不能修改值(必须给一个初始值),final修饰局部变量,局部变量只能赋值一次。
  4. static修饰的属性会成为类属性,通常用类名访问;static修饰的方法会成为类方法,通常用类名访问
  5. 静态代码块随着类的加载而执行,类只加载一次,静态代码块也只执行一次。初始化代码块,在创 建对象的时候执行,并且先于构造方法执行。局部代码块能改变局部变量的作用域。
  6. abstract修饰的类是抽象类,抽象类不能创建对象,抽象类通常作为父类,用于被子类继承。抽象 类主要使用场景是多态,父类类型指向子类对象。abstract修饰的方法是抽象方法,抽象方法只能 存在于抽象类(或接口)中。抽象方法主要是由子类实现。

参考:郑州华衫

本文章仅供自己学习所用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值