java学习笔记:面向对象之final,static抽象接口

java学习笔记:面向对象之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.随着类的加载而加载。(它在方法区中的静态区里)
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)抽象类的子类:要么重写抽象类中的所有抽象方法,要么也是抽象类。
4.抽象类的成员特点:
成员变量:有成员变量,成员变量可以是变量,也可以是常量。
构造方法:有构造方法。抽象类中构造方法的作用是用于子类访问父类数据的初始化。
成员方法:有成员方法,成员方法可以是抽象的,也可以是非抽象的。
  抽象方法:限定子类必须完成某些动作,起到一个规范和统一的作用。
  非抽象方法:提高代码的复用性。
5.思维的方式:
分析:从具体到抽象
实现:从抽象到具体
使用:使用的是具体的类的对象。
举例:老师、基础班老师、毕业班老师


接口
1.类或抽象类:放一些共性的东西,大家都有的东西,即“你会我也会,你有我也有。”
接口:定义的是额外的扩展性的东西,不是每个人都会的。
2.接口的特点:
  (1)定义接口使用的是interface关键字。
  (2)类和接口之间是实现关系,用implements关键字。class implements interface
  (3)接口不可以创建对象,可以使用多态的形式创建对象。它连构造方法都没有。
接口有没有其他的方式实例化呢?参照多态的形式使用类来实现实例化。
Jumping j = new Cat();
j.jump();
多态的几种形式:
A.具体类多态(几乎不用)
B.抽象类多态
C.接口多态(最常用)
  (4)接口的实现类   一个类实现一个接口。
要么重写接口中的所有抽象方法,要么这个类就是抽象类。
3.接口的成员特点:
成员变量:有成员变量,而且只能是常量。有默认的public static final修饰符,即是静态常量。
构造方法:没有构造方法
成员方法:有成员方法,而且都是抽象的。有默认的public abstract修饰符,即是抽象方法。
4.关系区别
类与类:继承关系。只能单继承,可以多层继承。
类与接口:实现关系。可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。
接口与接口:继承关系,可以单继承,也可以多继承。
5.抽象类和接口的区别
  (1)成员区别:
抽象类:成员变量:可以是变量,也可以是常量。构造方法:有。成员方法:可以是抽象方法,也可以是非抽象方法。
接口:成员变量:只能是常量。成员方法:只能是抽象方法。
  (2)关系区别
类与类:继承关系。只能单继承,可以多层继承。
类与接口:实现关系。可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。
接口与接口:继承关系,可以单继承,也可以多继承。
  (3)设计理念的区别
抽象类:被继承,体现的是is a。抽象类中定义的是继承体系的共性功能。
接口:被实现,体现的是like a。抽象中定义的是该体系的扩展功能。

四种权限修饰符
  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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值