JAVA面向对象OOP

1、类与对象

概念: 类用来封装数据,及处理这些数据的方法;*学会把我们自己创建的类看作是一种数据类型*

区别:类是抽象,而对象是具体

类变量和实例变量异同:

类变量:static修饰的变量成员变量,可以通过类型访问

实例变量: 没有static修饰的成员变量,必须通过实例对象访问

static:在类加载完成,进行初始化时执行,且整个生命周期只被执行一次,一般的可用于资源初始化

2、类的继承

概念:继承就是子类继承父类的特征和行为,由此可见,子类就有了使用父类的属性和方法的权限。

*为什么要继承?*

将重复代码抽取到公共类(父类)中,让其它的类(子类)来调用它,减少代码量。

格式: public class 子类名 extends 父类{}

注意事项:java不允许多继承,继承的作用代码复用,其次的多态。

*继承初始化顺序:*

父类属性==》父类构造方法 ==》子类属性 ==》子类构造方法

掌握继承的写法,对父类成员的访问和使用,在项目中使用比较多

 3、构造方法

1、构造方法:与类同名,一般用来初始化。

在对象实例化时,自动调用的构造方法,可以是无参的,也可以是带参的,就看我们怎么用。

例:

Student st=new Student();  //实例化,自动调用了Student类中不带参的构造方法
​
Student st=new Student(100);  //自动调用了Student类中带参的构造方法
一般格式:

public 构造方法名(){
​
•       //初始化代码
​
•    }


2、六大特点:

1、构造方法名必须与类文件名相同

2、构造方法不能有返回值,也不能带void

3、构造方法在对象实例化(new)时被自动调用(这说明它不能被其它类手动调用)

4、构造方法可以根据实际需求带参数(对类属性进行赋值)

5、同一个类中可以存在多个构造方法(重载),但不能有同参

6、同一个类中没有写构造方法时,系统会默认给个无参、无执行块的构造方法,但是一旦自定义了构造方法,系统自带的就会被覆盖。

 4、方法的重载和重写

4.1重写

当子类对于父类的不满意,可以补充,则直接重写父类的方法

删除重写中的super.方法();就是全部推翻父类写法。

注意事项:子类的方法名、返回值、参数必须要与父类保持一致,而访问修饰符只能比父类的要高或者相等

4.2重载

对方法进行重载,同一个类中存在多个方法名相同,参数不同的方法。

重载:*同名不同参*

同名即方法名相同;

不同参即参数个数、类型、顺序不同,与返回值无关。

注意事项:构造方法也能重载而且经常使用得到

5、接口与抽象类 

5.1抽象:

abstract 加在类或方法前面变成抽象类、抽象方法。

1、 抽象类

不能被实例化,只能作为其它类的基类(父类)。

2、 抽象方法

没有方法体;

必须在子类中被实现(重写),除非子类也是抽象类;

抽象方法必须位于抽象类中。(换句话说:抽象方法一定要在抽象类中,抽象类中不一定所有的方法都是抽象方法)

抽象方法的由来:只规定对象的行为,不负责实现。(比如猪吃的方法,狗也有吃的方法,基类中写个吃的方法,但是吃什么就不管了。)

5.2接口

语法:public *interface* 接口名

实现多个: public class 类名 *implements* 接口名1,接口名2...

什么是接口?

类只能单一继承,但可以实现多个接口

可以将接口理解为职责或契约,打个比方,也可以理解为:食品安全管理的一种规范,如果要生产食品就必须要符合此规范。

接口里全部都是抽象方法,其它类在实现接口时,都要对接口中的方法进行重写。

 6、多态

6.1多态:同一种行为在不同的对象上表现出来的不同的形态。

6.2使用多态实现思路:

1.编写父类

2.编写子类,子类重写父类方法

3.运行时,使用父类的类型,子类的对象

6.3四大修饰符:

*private*:私有化,最小气的,只能在自己的类中访问;

*friendly*:默认,友好的,只能在自己的类中、同包的类中访问;

*protected*:受保护的,能在自己的类、同包的类以及跨包形成父子关系时,子类中也能访问;

*public*:公共的,最大方的,当前项目中所有的类都可以访问。

7、异常 

异常:就是在程序中有可能发生的问题。

对于可能发生问题的代码,我们要进行监控,这就使用到异常。

1、系统异常(看下常见的异常)

一般格式:

try{//监视
​
•     //有可能出现问题的代码
​
•   }catch(//异常的类型 异常信息所封装成的对象){
​
•     //处理异常的代码 
​
•   }finally{
​
•     //最后会被执行的代码(有无异常都会被执行)
​
•   }


catch中一般我们这样写

e.printStackTrace()

用来查看异常类型以及异常发生的位置

e.getMessage()

只是简单显示异常的信息

System.exit(0)程序正常退出,System.exit(1)非正常退出

8、OOP设计原则

里氏替换原则:子类应当可以替换父类并出现在父类能够出现的地方,是多态的基础上延伸的

迪米特原则(最少知识原则):

只与你的直接朋友交谈,不与"陌生人"说话

优点:其目的是降低类之间的耦合度,提高模块的相对独立性

缺点:过度使用迪米特法则会使系统产生大量的中介类,从而增加系统的复杂性

单一职责原则(DIP):类不要承担太多的功能,职责要单一;如果承担太多功能,则每个功能的变化都会影响该类
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值