static final 抽象类 接口

静态 static

静态方法中调用的特点
1 在静态方法中只能调用静态方法
2 在静态方法总只能调用静态变量
非静态方法中调用的特点
可以调用静态和非静态

注意权限修饰符问题
当一个方法是静态方法的时候 私有化不可以
可以直接通过类名调用
当一个属性是静态的时候 (跨包 默认) 不可以
可以直接通过类名调用
被静态所修饰的成员 优先于对象存在

被静态所修饰的成员被所有成员共享
饮水机 静态
水杯 非静态

归属问题
被静态所修饰的成员 属于类不属于对象
成员归类所有
不被静态修饰的成员 属于对象
成员归对象所有

使用 static 的注意事项
1.在static 中没有this关键字
this相当于一个类的对象`
2.在静态方法中只能调用静态成员
被静态所修饰的属性和方法 就不是成员变量和成员方法了
而是类属性 类方法

有了静态之后 加载的顺序(初始化顺序)
类>静态属性>静态方法>对象>非静态属性>非静态方法
静态变量>静态代码块>静态方法

静态变量和非的区别
1.所属不同
静态变量 属于类
非 对象
2.加载时间不同
静 随着类的加载而加载
非 随着对象的创建而加载
3.调用不同
静 通过类名调用 也可以对象调用
非 只能对象调用
4.存储位置不同
静 静态区
非 在内存

静态代码块

static{
  System.ou.print("hello");
}

在静态变量加载之后执行 在调用静态方法之前之情
静态变量 >静态代码块>静态方法

常量

自然常量
10 “hello” ‘a’
自定义常量
被 final 所修饰的变量 称之为常量

final
可以用来修饰类 方法 变量
1.修饰类
最终类 到此结束 不会有子类 不能被继承
2.方法类
不可以重写
3.变量类
不能重新赋值
如果修饰的是引用类型 不可以改变引用地址
如果修饰IDE是基本数据类型 则不能改的是值

抽象类

什么是抽象
类本身就是抽象的概念

狗一定是动物 动物不一定是狗
在java中父类的一些属性和方法是需要在子类中重写的,针对于这种子类需要重写而父类不用具体实现的方法 称之为 抽象方法

抽象方法 没有方法体,需要对抽象的关键字进行修饰 abstract
抽象方法在定义的时候 所在的类必须是抽象类
public abstract class Animal

抽象类一定有抽象方法吗? 不一定
如果一个类的父类是抽象类,父类中有抽象方法
1.子类如果是普通类则必须重写父类的抽象方法
2.子类如果是抽象类则可以不重写
父类没有抽象方法则正常继承

如果一个类是抽象类则不可以创建对象

抽象类可以创建构造方法:
但是构造方法不是给抽象类用的,是给子类初始化父类属性用的;
如果必须使用父类(抽象类)对象,对象可以用多态实现。

抽象类中可以存在抽象方法和普通方法。

抽象类创建:
创建一个抽象类 abstract class
变量 没有特殊要求
构造 可以有,是给子类用的
方法 抽象和普通

抽象类的使用:
1.不可以创建对象
2.可以被继承
如果子类是普通类,必须重写抽象方法
如果子类是抽象类 ,可以重写可以不
如果子类是抽象类,则需要创建子类的子类
如果抽象类的子类也是抽象类并且重写了父类的抽象方法,则子类的子类可以不用重写(抽象方法最少重写一次)

抽象类的一些小问题:
1.一个类如果是抽象类,可不可以不写抽象方法,如果写,意义是什么
可以。意义是不可创建对象
2.abstract 不可以和那些关键字使用
private
final (包括类和方法)
final修饰类 不能被继承 但是抽象类一定要被继承
final修饰方法 不能别重写 但是抽象类一定要被重写
static 抽象方法没有方法体 一个没有方法的方法体 调用没有意义

接口
什么是接口:对一个事物的扩展

在程序中接口怎么写:事物是可以通过接口来扩展的,在程序中通过类来描写事物
继承 多态 可以理解为造一个升级版
接口:修改原本的,改装

用一句来描述接口:接口可以理解为一种特殊的抽象类,在接口中只有抽象方法。
接口也没有办法创建自己的对象,接口没有构造方法

接口的创建:
接口的语法结构 public interface 接口名{抽象方法();}
实现类的命名要求:
如果此类中有其他的功能和作用则没有要求;如果只是实现接口中的方法命名要求为 接口名Impl

一个类如何实现接口 ,语法如下:
public class 类名 implements 接口名{}
存在继承关系 public class 类名 extends 父类名 implements 接口名{}
实现多个接口 public class 类名 implements 接口1 接口2{}
一个类是抽象类 public abstract class 类名 implements 接口名{}

接口的实现类如何使用
可以直接创建类的对象;也可以使用多态创建接口的对象。

多态的使用
普通类 基本不用
抽象类 偶尔
接口 经常

接口中有什么结构
成员变量 只有静态常量
构造方法 没有
成员方法 抽象方法

接口和类的关系:
实现关系 类实现接口
一个类可以实现多个接口
如果接口的实现类是普通类,则必须实现接口的所有方法;
如果几口的实现类是抽象类,则不必,如果想使用此类,则必须创建此类的子类,实现接口中的抽象方法和抽象类的抽象方法

接口和接口的关系:继承关系,可以单可以多 like-a。

猜你喜欢

转载自blog.csdn.net/weixin_43509023/article/details/83858765
今日推荐