java学习笔记: 基础知识: day08: final和static关键字、抽象类、接口、包、四种权限修饰符

====
day08
java学习笔记: 基础知识: day08: final和static关键字、抽象类、接口、包、四种权限修饰符

一、final和static关键字
1.final
  (1)final是一个关键字,表示最终的意思。可以用来修饰类、修饰变量、修饰方法。举例:绝育手术
  (2)final修饰类的时候:表明该类是最终类,不能被继承。
  (3)final修饰成员变量:表明该变量是常量,不能再次被赋值,只能赋值一次。
  (4)final修饰方法:表明该方法是最终方法,不能被覆盖override。

2.static
  (1)static是一个关键字,表示静态的意思。可以用来修饰成员变量和成员方法。
  (2)static修饰成员的特点:
    A.被类的所有对象共享。其实也是判断一个成员是否应该用static修饰的条件。
    B.可以通过类名直接访问。类名.static成员。推荐使用。
    C.优先于对象存在。优先于所有对象加载。
    D.随着类的加载而加载。(它在方法区中的静态区里,见图片:“方法区里的静态区.bmp”)

 

3.使用场景及原因
package com.mystudy.constants;
public class Constants{
  /*放各种常量:地址、网址、硬盘上的路径*/
  public static final String ADDRESS = "中国北京";//调用:Constants.ADDRESS
  //static修饰:是为了用类名进行访问,用到常量的时候。
  //final修饰:不让外界进行修改
  //public修饰:可以在别的类中进行访问
}

4.访问权限
  (1)非静态的成员方法:
    A.能访问静态的成员变量
    B.能访问非静态的成员变量
    C.能访问静态的成员方法
    D.能访问非静态的成员方法
  (2)静态的成员方法:
    A.能访问静态的成员变量
    B.能访问静态的成员方法
  (3)注意事项:静态成员方法中不能出现this、super这样的关键字。
原因:静态是随着类的加载而加载,this、super这样的关键字是随着对象的创建而存在的。
(开发的原则:先进内存的东东不能访问后进内存的东东。)
  
  
二、抽象类
1.在java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。

2.抽象类、抽象方法都必须用abstract修饰。
public abstract void eat();
public abstract class Animal{}

3.抽象类的特点:
  (1)抽象类和抽象方法都必须用abstract来修饰。
  (2)抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。
  (3)抽象类不能实例化,不能直接创建对象,但可以通过多态来创建对象。
抽象类是如何实例化呢?参照多态的方式,通过子类实例化。
Animal ani = new Cat();
ani.ea();
ani.sleep();
  (4)抽象类的子类:要么覆盖override抽象类中的所有抽象方法,要么也是抽象类。

4.抽象类的成员特点:
(1)成员变量:有成员变量,成员变量可以是变量,也可以是常量。
(2)构造方法:有构造方法。抽象类中构造方法的作用是用于子类访问父类数据的初始化。
抽象类有构造方法,用来在子类继承抽象类的时候,用来初始化抽象类的成员变量,初始化完毕之后,子类才能继承。
(3)成员方法:有成员方法,成员方法可以是抽象的,也可以是非抽象的。
  A.抽象方法:限定子类必须完成某些动作,起到一个规范和统一的作用。
  B.非抽象方法:提高代码的复用性。

5.思维的方式:
分析:从具体到抽象
实现:从抽象到具体
使用:使用的是具体的类的对象。
举例:老师、基础班老师、毕业班老师


三、接口
1.类或抽象类:放一些共性的东西,大家都有的东西,即“你会我也会,你有我也有。”
接口:定义的是额外的扩展性的东西,不是每个人都会的。
2.接口的特点:
  (1)定义接口使用的是interface关键字。
  (2)类和接口之间是实现关系,用implements关键字。class implements interface “类实现接口”
  (3)接口不可以创建对象,可以使用多态的形式创建对象。它连构造方法都没有。
接口有没有其他的方式实例化呢?参照多态的形式使用类来实现实例化。
Jumping j = new Cat();
j.jump();

多态的几种形式:
A.具体类多态(几乎不用)
B.抽象类多态
C.接口多态(最常用)

  (4)接口的实现类   一个类实现一个接口。
要么覆盖override接口中的所有抽象方法,要么这个类就是抽象类。

3.接口的成员特点:
(1)成员变量:有成员变量,而且只能是常量。有默认的public static final修饰符,即是静态常量。举例:public static final String name;
(2)构造方法:没有构造方法
(3)成员方法:有成员方法,而且都是抽象的。有默认的public abstract修饰符,即是抽象方法。

4.关系区别
(1)类与类:继承关系。只能单继承,可以多层继承。
(2)类与接口:实现关系。可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。
(3)接口与接口:继承关系,可以单继承,也可以多继承。

5.抽象类和接口的区别
  (1)成员区别:
抽象类:成员变量:可以是变量,也可以是常量。构造方法:有。成员方法:可以是抽象方法,也可以是非抽象方法。
接口:成员变量:只能是常量。成员方法:只能是抽象方法。
  (2)关系区别
类与类:继承关系。只能单继承,可以多层继承。
类与接口:实现关系。可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。
接口与接口:继承关系,可以单继承,也可以多继承。
  (3)设计理念的区别
抽象类:被继承,体现的是is a。抽象类中定义的是继承体系的共性功能。
接口:被实现,体现的是like a。接口的抽象方法中定义的是该体系的扩展功能。


四、包package
1.包:其实就是文件夹。

2.包的作用:就是对类文件进行分类管理。
方案一:按照功能分。举例:学生:增删改查
方案二:按照模块分。举例:老师:增删改查

3.包的定义格式:
package 包名;
如果是多级包,用.隔开即可.

4.注意事项
(1)package必须是程序的第一条执行语句。
(2)package语句在一个java文件中只能有一个。

5.导包
(1)类不在同一个包下,使用的时候,要加类的全路径名称。
(2)格式:
import 包名;

五、四种权限修饰符
图片:见“四种权限修饰符.bmp”


  1.本类  2.同一个包下(子类和无关类)  3.不同包下(子类和无关类)
                                                            3.1子类  3.2无关类 
private  1.Y
默认(friendly)  1.Y  2.Y
protected  1.Y  2.Y  3.1Y
public  1.Y  2.y  3.1Y  3.2Y

====

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值