面向对象--Day12

面向对象

什么是面向对象

面向对象的本质是:以类的方式组织代码,以对象的组织(封装)数据。

认识角度:先有对象后有类;对象,是具体的事物;类是抽象的,是对对象的抽象

代码角度:先有类后有对象。类是对象的模板

回顾方法定义与方法调用

方法的定义

public 返回值类型 方法名(){方法体;};

修饰符 返回值类型 方法名(形式参数){方法名;return 方法值;}

break:跳出switch,结束循环和return的区别;

方法名:见名知意;

参数列表:(参数类型 参数名);

方法的调用

对象名.方法名();

递归;

静态方法static和类一起加载出来的

非静态方法与类实例化new之后存在的

静态方法与非静态方法不能相互调用

形式参数与实际参数要*一一对应

类的声明

关键词class

类与对象的创建

类是抽象的,需要实例化

类实例化会返回一个自己的对象

成员变量/属性

默认初始值:

  1. 数字:0

  2. char:u0000

  3. boolean:false

  4. 引用(基本数据类型8大):null

构造方法

无参构造:public 类名(){};

有参构造:public 类名(形参){this.成员变量=成员变量;};

  1. 必须和类的名字相同

  2. 必须没有返回类型,也不能写void

  3. 使用new关键字,必须要有构造方法;本质在于调用构造方法

  4. 有参构造:一旦定义了有参构造,无参就必须显示定义;

  5. name指的是括号内形参;this.name是上面的成员变量;

封装性

高内聚,低耦合

高内聚就是类的内部数据操作细节自己完成,不允许外部干涉

低耦合就是仅仅暴露少量的方法外部使用

属性私有get/set

public 数据类型 get成员变量(){

return 成员变量;

}

public void set成员变量(形参){

this.成员变量=形参;

}

private只能在其类获取

继承性

继承是类与类的关系

子类有叫派生类;而父类又叫基类

子类继承父类,就会拥有父类的所有方法;用关键词extends表示

在java中,所有的类,都直接或者间接继承object(ctrl+h)

继承只能是单继承;就是一个子类只能有一个父类,但一个父类可以有多个子类

super与this

image-20210221130025515

方法的重写

重写都是方法的重写,与属性无关

静态方法:父类的引用指向了子类(B b=new A();)调用的是B的方法

方法的调用只和左边,定义的数据类型有关

重写:非静态方法

不能被重写:

  1. static 方法,属于类,它不属于实例;

  2. final 常量;

  3. private 方法;

子类重写父类的方法

image-20210221141429435

多态

对象能执行哪些方法,主要看对象左边的类型

  1. 多态是方法的多态,属性没有多态;

  2. 父类与子类:有联系,类型转换异常:ClassCasException;

  3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象

    Father f1=new Son();

instance of与类型转换

instanceof 是判断是否有父子关系

System.out.println(x instanceof y);

把子类转换为父类:向上转型;

把父类转换为子类:向下转换;强制转换(要转换的类型)对象或变量;

代码块

只执行一次静态代码块{ }

(赋初值)匿名代码块static{ }

静态导入包

import static java.lang.(Math.random);

抽象类

  1. 不能new这个抽象类,只能靠子类去实现它:约束;

  2. 有抽象类不一定有抽象方法,但有抽象方法一定是抽象类

  3. 若要去继承抽象类,子类一定要有其方法或者子类是抽象类

接口

只有规范(约束)

关键词interface

类实现接口 implements 关键字

实现接口的类,就需要重写接口中的方法或变成抽象类

利用接口实现多继承

接口中的所有定义的方法其实都是抽象的

成员变量是常量(public static final)

接口不能被实例化

内部类

成员内部类

  1. 可以通过外部类来实例化内部类(首先要Outer o1=new Outer(); Outer.Inner i1=o1.new Inner();)

  2. 可以获得外部类的私有属性

静态内部类

局部内部类

匿名内部类



posted @ 2021-03-10 09:12  MGLblog  阅读(61)  评论(0)    收藏  举报