学习总结1

学习总结1

目前学习Java也已经有半个月了,对编程思想也有更清晰的认识了。在我看来,知识是在不断总结的过程中慢慢积累的,因为我们在总结的过程中不仅可以回顾学过的知识点,还能够发现我们学得不好的地方,进行查漏补缺。本文主要分享一些这段时间学习的总结。上一周主要学习了面向对象语言,因此接下来就主要对面向对象方面的内容进行一些简单的总结,如果有不恰当或者错误的地方,希望各位大佬指出,感激不尽。

面向对象思想

在我们的生活中,我们每个人都会做一些事,比如买菜、做饭、洗碗等等,这些都需要我们自己去完成。然而很多人不愿意自己去做,那么有的人他就会选择请一个保姆来做这些,那现在我们就只要命令保姆每天给我们买菜、做饭、洗碗就可以了,这就是我们编程中所说的面向对象思想,我们在编写程序时就需要以面向对象的思想来实现,这是非常重要的。

  • 面向对象是相对于面向过程而言的,指的是把相关的数据和方法组织为一个整体来看待。
  • 面向过程关注的是执行的过程,而面向对象关注的是具备功能的对象。
  • 对象对象到面向过程的转变,是程序员思想从执行者到指挥者的转变。
一、类与对象
  • 类:是共性的产物,是一个综合的特征。

  • 对象:个性的产物,是一个个体的特征

  • 类与对象的关系:
    类通过对象才可以使用,对象所有操作通过类定义。

  • 类由属性和方法组成
    类的定义格式:

 class 类名称{
         成员属性         //数据类型  属性名;
         成员方法       
         /*修饰符+返回值类型+方法名(形式参数列表){
               方法体;
               return 返回值;
          }
         */
}
需要注意的是:
           类必须编写在 .Java文件中;
           .Java文件中只能有一个public修饰的类;
           .Java文件名称必须与public修饰的类名完全一致;
           同一个包中类的命名不能重复。
  • 对象的定义格式:
类名称  对象名称 = new  类名称();

//给对象属性赋值:
对象名称.属性名 = 值;

//调用类中的方法:
对象名.方法名();

//需要注意的是:
Book b1 = new Book();
Book b2 = b1;
//此时b1和b2是同一个对象,当其中一个对象发生变化时,两个都会发生变化。
  • 构造方法(构造器):用于对象初始化,方法名称与类名相同,没有返回值类型声明。
    如果一个类中没有明确的编写构造方法,则编译器会自动生成一个无参的构造方法,构造方法中没有任何代码。
例:
public person(){
       System.out.println();
}
二、面向对象的三大特征
  • 封装性
    用private来修饰,是为了保护或者防止代码被无意破坏,不让类以外的程序直接访问和修改。
    主要是通过隐藏对象的属性和实现细节,仅对外公开访问方法,并且控制访问级别。
    我们在编写代码时建议对所有的属性进行封装,并且引入getter/setter方法,允许外部通过调用
    getter/setter方法访问成员属性。
  • 继承性
    继承是指在一个现有类(父类)的基础上在构建一个新类(子类),子类继承父类的特征和行为,即拥有和父类一样的属性和方法,可以调用.通过继承就可以避免大量的重复代码。
    格式:
class 子类 extends 父类{
         
}

需要注意的是:Java中只有单继承、多重继承,没有多继承。

  • 多态性
    是一种对象的多种表现形态,方法的重载和重写也是多态的一种.
    比如说护士和学生,他们都属于人的一种,因此护士和学生就是人的不同表现形式,体现了人的多态.
    多态的使用:对象的类型转换
子类实例->父类实例
格式:父类 父类对象 = 子类对象;

父类实例->子类实例
格式:子类 子类对象 = (子类)父类实例;

注意不同形态之间不能相互转换,比如说护士就不能转换为学生。

三、重载(overload)与重写(override)是什么?他们有什么区别?
  • Overload:重载,表示在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同(或参数顺序不同)即可,与返回值无关
  • Override:重写,对父类方法进行重写,参数类型必须相同,在子父类中实现.
  • 区别:
    在这里插入图片描述
四、抽象类与接口
1.抽象类
  • 抽象类必须用abstract声明,在一个抽象类中可以有抽象方法也可以有非抽象方法。
  • 抽象方法是指: 只声明未实现的方法(没有{}方法体)
    格式:
abstract class 类名{
         public abstract void 方法名();
         
}

—注意:
抽象类不能直接被实例化,即不能直接通过new关键字完成。
抽象类必须被子类所继承,所继承的子类(不是抽象类)则必须重写抽象类中的全部抽象方法,否者子类也必须用abstract声明是抽象类。

—常见问题:
抽象类不能使用final声明,因为final修饰的类不能有子类,而抽象类必须被子类继承才有意义。

2.接口
  • 类中的全部方法都是抽象方法,全部属性都是全局常量,那么就将这个类定义为一个接口。
    格式:
interface  接口名称{
       全局常量;可以简写为 数据类型 常量名 = 值;
       抽象方法;可以简写为 返回值类型 方法名();
}
  • 与抽象类类似,都需要依靠子类,不过接口是通过子类来实现,允许多实现,并且接口在继承时允许多继承。
    格式:
class 子类 implement 父接口1、父接口2{
          
}

//接口的继承
interface C extends A,B{

}
3.抽象类与接口的区别

在这里插入图片描述

五、可变参数

  • 可以传入任意个数的参数
    格式:
pubLic static int sum(int...nums){

}
  • 可变参数只能出现在参数列表的最后。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值