Java学习笔记2.1

本文详细探讨了面向对象编程的优势,如易维护、易复用,以及封装、继承和多态三大核心特性。通过Phone类实例展示类和对象的关系,讲解了Java类的基本结构和创建对象的方法。还涵盖了方法重载、构造方法、继承与重写、多态等关键概念。
摘要由CSDN通过智能技术生成

面向对象的优势:

  • 降低了耦合性,提高了可维护性
  • 面向对象过程是具体化的,流程化的
  • 面向对象是模型化的
  • 优点:易维护、易复用、易拓展、由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更易于维护。

面向对象的三大特征

  • 封装:将功能封装成一个个独立的单元,减小耦合,避免牵一发而动全身,方便对程序的修改。
  • 继承:代码重用,减少代码量,间接减少维护成本。
  • 多态:不同场景做出不同响应

类和对象的关系

  • 类:类就是一个模板是一类对象的模板,它描述一类对象的行为和状态,定义了这些对象应该有的属性及方法
  • 对象:万物皆对象具体某一车辆就一个对象,车有轮胎,颜色等属性,有开车的行为,对象是类的具体体现。对象的实质是:属性(成员变量)+行为(方法或者函数)

生活中描述事物无非就是描述实物的属性和行为

  • 属性:对应类中的成员变量。
  • 行为: 对应类中的成员函数(方法)

public class Phone{

   //定义属性(成员变量,不要忽略成员)

   //成员变量有初始值。局部变量没有初始值。

   String cpu="晓龙888";

   int ram=12;//内存:8g/12g

   int rom=256;//储存空间:128g/256g

   int battery=4800;

   double screen=6.2;//屏幕大小

   //行为,就是功能,也就是成员方法(不要忽略成员)

   void call(String name){

           System.out.println("打电话给"+num);

}

Java类的基本结构

类的结构:属性、方法、构造方法、内部类、块。

类的声明

【访问权限修饰符】【修饰符】class 类名{

类体

}//访问修饰符有两种public、default      修饰符:final,abstract,synchronized

类的作用:类就是一个模板,定义多个对象共同的属性和方法

示例:public class Student{}

成员变量和临时变量

  • 成员变量:
  1. 堆内存,声明在类内,方法外;
  2. 可以在声明时赋值或者构造方法赋值,若不赋值,会有默认初始值
  3. 作用域:整个类都可以使用。
  • 临时变量:
  1. 栈内存,方法内,包括方法的参数;
  2. 声明和赋值之后才能使用,否则编译就会报错;
  3. 作用域:找括号(变量声明在哪{}里,那么它就在哪对{}里生效),出了括号就不认识了。
  • 成员变量和临时变量如果变量名相同,那么就采用就近原则,以局部变量为准。(编程中小范围与大范围相冲突时,以小范围为准,相当于天气预报

创建对象

如何创建对象?使用new调用构造方法创建类的一个对象:

  • 调用无参数的构造方法           类名 对象名=new 该类的构造方法();                                                例:Student stu=new Student();
  • 调用有参数的构造方法           类名 对象名=new 该类的构造方法(参数1,参数2...);                    例:Student stu=new Student("lilei",18);

创建对象的作用想要访问一个类中的非私有成员,必须要创建该类对象,通过对象名来访问。

  •  方法的作用
  •     Java语言中的“方法”(Method)在其它语言中也可称作为“函数”(function)。对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到随时任意使用,那么就可以将这些代码放在一个大括号“{}”中,并且起一个名字。使用代码的时候,直接找到名字调用即可。复杂、较多的代码,并且多次使用,那么就应该将代码封装在方法中
  • 定义:成员方法是类中进行数据处理(对象的行为),实现相关功能的函数
  • 方法决定了一个对象能够接收什么样的消息。方法的基本组成部分包括:名称、参数、返回值和方法体。
  • 声明方式:

   【访问权限修饰符】【修饰符】返回值数据类型 方法名(形式参数列表){

             执行语句;

              return 返回值;

}

alt+insert
System.currentTimeMillis();  //获得当前时间的毫秒值

SimpleDateFormat  在java.text包下对日期进行格式输出的类
实现方式:
          SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm");
            Date date=new Date();
            System.out.println(date);
            String startTime=simpleDateFormat.format(date);
            System.out.println(startTime);
将字符串转成日期
  Date d1=simpleDateFormat.parse(records[i].getStartTime());

构造方法的作用: 创建对象的同时,完成数据的初始化工作。
在定义一个类时没有创建构造方法,系统会默认指定一个无参的构造方法,
如果已经自定义了构造方法,系统不再指定默认的构造方法。
构造方法的特点:
     1.与类同名
     2.没有返回值,不能指定返回值的类型也不能写void
     3.可以带有0个或多个参数
     4.构造方法不能用static(静态的)、final(最终的)、abstract(抽象的)来修饰

方法重载(overload):
     在同一个类或在父类和子类中,定义多个同名方法,方法的参数的类型、个数、顺序不同可以实现
     方法重载,方法重载与返回值和访问修饰符无关。
this的作用:  指代当前对象(表示对当前对象的引用)
this的用法:   this.成员变量    this.方法名()    this():调用本类的其它构造方法,必须放在第一行
this的注意事项:   不能放在static静态方法中
String初始值为null       int初始值为0

创建对象分为两个步骤:
    类名  对象名;     在栈中开辟一个空间,空间名就是对象名,空间中的内容是null
    对象名=new 类名()  :    在堆中开辟一个空间,空间的内容是对象的属性值,栈空间的内容变为堆空间的位置


面向对象的三个基本特征:    封装、继承、多态
封装的定义:   把对象的属性和操作结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
封装的作用:实现高内聚、低耦合的编程思想,提高程序的安全性、提高代码的复用性(高内聚:就是类的内部数据操作细节自己完成,不允许外部干涉
低耦合:是仅暴露少量的方法给外部使用,尽量方便外部调用)
封装的优点:1.提高代码的安全性
                     2.提高代码的复用性
封装的细节:1.一般用private访问权限来修饰成员变量
                     2.提供相应的get、set方法来访问相关属性,这些方法通常是public修饰的。以提供对属性的赋值与读取操作。
                     3.一些只用于本类的辅助性方法,可以使用private修饰
                     4.希望其他类调用的方法用public修饰
继承:   子类可以直接使用父类中所有非私有的内容(只能单继承 )
继承声明形式:【访问权限修饰符】【修饰符】子类名extends父类名{子类体}
继承的关键字:   子类 extends 父类
继承的作用:   提高代码的重用性(方便修改代码,减少代码量)
继承的两个特性:    单根性和传递性
继承的注意事项:
      构造方法不能被继承,可以通过super()在子类构造方法中调用父类的构造方法
当父类成员变量、子类成员变量与子类方法中的局部变量同名时,优先级最高:子类方法中局部变量   优先级居中:子类成员变量     优先级最低:父类成员变量
super关键字:   指代父类对象
super用法:   super.父类方法名()   :调用被子类重写的父类的方法。
                    super. 成员变量:     调用父类的成员变量

子类 is a 父类

方法重写(覆盖):在父类和子类中,定义两个同名方法,方法的参数和返回值都一样,子类访问修饰符>=父类访问修饰符。  public>protected>默认>private
方法重写的好处:  可以不需要判断,自动调用子类中的重写方法。
子类中有额外的方法的处理方式:   通过instanceof判断,通过()强制转换,例如:  
                                                        if(pets[i] instanceof Dog){
                                                               ((Dog)pets[i]).dog();
                                                         }

在父类和子类中定义两个同名的成员变量,在子类的方法中只能直接访问子类中的成员变量
,如果想访问父类的成员变量,通过super.变量名。

在创建子类对象时,会先调用父类的构造方法,再执行子类构造方法。
   默认会在子类构造方法的第一条代码中加入super() 来调用父类的默认构造方法。

多态:不同的对象在执行同一个动作时表现出来不同形态。对外一种表现形式,内在有多种具体实现。
多态具体体现:   最主要的是方法重写,也可以方法重载或多态参数
子类重写父类的静态方法,实现不了多态,自己调用自己的方法。
子类和父类定义同名变量,值不一样,实现不了多态,自己调用自己的变量。
多态的弊端: 不能调用子类特有方法和成员变量,只能用父类的方法和成员变量
多态的三个必要条件:    继承、   方法重写   、对象向上造型(父类的变量指向子类的对象)

定义包的关键字是package一定位于文件的第一行
包的作用:  避免类重名、控制访问权限
使用包:   import  包名.子包名.类名;   位于package的下边

4种访问修饰符:
   public :   同一项目中的任意类访问
   protected:   同包类访问,不同包的父类和子类可以访问
   default:   同包的类访问
   private:   只能在本类中访问

final关键字:
   标识成员变量是一个常量,只能在定义时赋值,或在构造方法中赋值。只能取值不能再二次赋值
   标识方法,方法不能被子类重写
   标识类,不能有子类,不能定义成抽象类或接口

static 是静态的,可以用于修饰类的属性和方法,属性的的存储空间是在内存的静态存储区中,只有一份,会被该类的所有对象共享。
static的属性和方法可以通过类名.调用,也可以通过对象名.调用,推荐前者
静态的属性与对象没有关系,是所有对象共享的,只与类有关。

本类的方法之间调用:
   静态方法可以被其他任何方法直接调用,非静态方法可以被非静态方法直接调用,静态方法不能直接调用非静态方法,
   得创建对象调用。

static静态代码块:
   语法:   static{}
   作用:   用于对类的静态成员完成初始化操作
   注意:    静态代码块的执行顺序先与构造方法,只会被执行一次

=

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值