2019-07-31

封装:数据隐藏 :private,get/set;

2: 将程序中的相同代码进行抽取封装成方法;

3:将一些负载的操作 变成比较简单的操作;   jdbc ------> mybatis


继承: 

1.  is -a 的关系;      接口:like -a  ; 组合 has-a 的关系;

2.子父类

3.方法重写 : 权限修饰符和异常可以变;   权限是需要大于等于父类的方法; 异常要越来约小;

class  A

{

  show() throws   Exception {}
}


多态: (前提 : 有继承或者实现关系,重写了父类或者父类接口中)

1. 一个对象具有多重形态;

2.成员变量: 均为左;   变量是不存在覆盖的情况;

3.成员方法 : 编译左,运行右;




高级应用

1: staitc  

   a. 能够修饰 类(只能修饰内部类),方法和变量

b. static  修饰的数据 ( 方法和变量) 被该类的所有对象所共享 ,因为它属于这个类;

c. static 只能修饰 全局变量(成员+ 类变量) ,不能修饰局部变量;

d.静态数据可以直接访问静态数据;   不能直接访问非静态 (产生顺序的问题);

e: 子父类关系中,父类的静态方法不能重写为非静态;

f.静态数据 可以使用类名直接调用,虽然对象也可以调用,不推荐使用对象调用静态数据;如果使用对象调用静态数据,实际上是对象将操作委托给类;

g.静态代码块:伴随类的加载而执行,只执行一次;      构造代码块: 伴随着构造器的执行而执行,而且优先于构造器;构造代码块  主要是对程序中的成员变量进行显示初始化;

h. 静态导入 

(练习) 

2: final   关键字

       a. 修饰类 不能被继承,方法  不能被重写, 变量   不能修改值;

b.  final修饰的变量, 由于不饿能更改值所以被称之为常量;

c. 当final 修饰的是全局变量时,在定义该变量时必须显示初始化(不能默认初始化);  当final 修饰的是局部变量的时候,在使用之前必须显示化赋值,而且不能再更改;

d. fianl  也可以用于修饰方法的形式参数;方法的形式参数相当该方法的局部变量;

3: 访问控制,权限修饰符

public  :  任意类中都可以访问,能修饰类,方法,变量;

default : 什么都不写,默认修饰符, 能修饰 方法,类, 变量;

protected: 受保护的,能修饰方法和变量;

prviate :  私有的,只能在本类中访问; 能修饰类(仅限修饰 成员内部类) 方法,变量;

同包同类                     同包不同类              不同包不同类       不同包子父类    同包子父类

4:抽象类和接口

抽象类:

a.在java中 使用abstract 修饰的类 称之为抽象类;  只能提出一个大概的方法,但是无法描述具体的每个情况,这种时候使用 抽象类。 子类继承抽象类之后需要自己去实现抽象类的功能,抽象类只提供以一个标准;

b. 抽象类中有构造器,也可以自己定义构造器,但是不能通过抽象类中的抽象类 不能被实例化;

c.抽象类的使用 主要是通过创建新的类【子类】  继承该抽象类【父类】 ,创建子类对象,重写父类中的抽象方法,然后调用方法;    也可以通过匿名内部类的形式访问抽象类中的数据;

d.如果创建的新的类 继承了抽象类,但不重写抽象类中的抽象方法,则这个类夜要定义成抽象类;

e:抽象类不一定有抽象方法,抽象方法的类一定是抽象类  

f.不能被private 修饰;

g.抽象类中 是可以用普通方法的;

疑问? 并没有节省代码,还是自己要重写 为什么还要继承抽象类;

抽象类: 只能够是子类的引用父类

我们举个简单的例子:我们有一个动物的类,里面有一个Run的方法,这个时候我们需要继承他,一只狗说我会跑,老虎说我也会跑,孔雀说我也会跑,这个时候每一个子类都要继承他,而且由于Run方法已经被父类实现了,所以每一个都要重写方法体,是不是很麻烦,这个时候JDK就说了,既然那么多类需要继承他,我直接不实现这个方法,你们谁用谁实现算了。这个就是抽象类存在的意义! 说的比较官方一些的话,就是抽象类可以将设计和实现分离,你写你的抽象类,我写我的实现方法。这也是为什么说抽象方法必须被继承才有意义 --------------------- 作者:何处锦绣不灰堆

意义 在于: 谁用谁实现,如果没有实现,父类的抽象方法是没有意义的;





接口 : interface   name {

}

1.接口是对抽象类更高层次的抽象;

2.接口中的方法全部都是抽象方法(默认自带是public  abstract  修饰);但是在JDK9中,接口中也是有可以存在不同方法的;

3.接口中只有成员变量,并且该变量是public static final 修饰  这不就变成了常量吗;   局部变量——  在方法中存在的;

4:接口没有构造器,不能创建对象,只能通过创建接口的实现类【】的对象来使用接口;

5: 定义的子类实现了接口,但是没有重写接口中的全部抽象方法,该子类也需定义为抽象类; 

6: 类只能单继承,但是接口可以多实现,也可以多继承;

7:接口继承了就必须实现它;

接口的作用:  是的开发和设计分开; 一个人负责设计接口,一些人负责实现接口;

如果是一个人开发 那么接口和类没有必要区分了。

5:内部类

6 : == 和equals 方法的区别;

7 :  String类和object 类;

你可能感兴趣的:(2019-07-31)