面向对象、API、ArrayList集合、继承

面向对象

类和对象

1、类是一组具有共同属性和行为的事物的抽象,简单理解,类就是对事物的一种描述     

     描述事物,则需要【属性】和【行为】

     属性:事物具备的各个特征,例如 -> 手机这个事物的特征(品牌,价格..)

     行为:事物能执行的操作,例如 -> (打电话,发短信)

2、 对象的理解
      对象代表客观存在的事物

3、 类和对象的关系理解
      类是对象的抽象(描述),对象是类的实体
      在程序中需要现有类,才能创建出对象!

类的定义

 1、类的编写步骤

  定义类

  编写成员变量

  编写类的成员方法

                        public class //类名{

                                //成员变量

                                变量一的数据类型 变量一;

                                变量二的数据类型 变量二;

                                ……

                                //成员方法

                                方法一;

                                方法二;

                                ……

                        }

2、成员变量的定义格

 【位置发生了变化】在类中方法外

3、成员方法的定义格式 

    跟之前定义方法的格式相同【static关键字暂时不加】

例题

对象的使用

 1、创建对象的格式

格式:类名 对象名 = new 类名();

  范例:Phone  p = new Phone();

 2、成员变量的使用

        可输出使用,可赋值使用

  格式:对象名.变量名

  范例:p.brand

 3、成员方法的使用

  格式:对象名.方法();

  范例:p.call();

例题

练习

对象内存图

1、单个对象

对象在内存中的创建过程:

   在堆内存中开辟空间,产生地址值 

  成员变量在堆内存中出现,并产生默认初始化值(例如:null0

  将对象地址值,给对象名记录,便于通过对象名调用堆内存中的成员变量

对象的使用:

   使用对象名找到堆内存空间中存储的成员变量,替换默认初始值

 

        具体代码: s.age = 28;

 将替换后的成员变量取出使用

        具体代码:System.out.println(s.age);

 使用对象名调用成员方法

       具体代码:s.study();

2、多个对象

1) 多个对象内存中产生的地址值一定 不同
2) 每个成员变量都会存储在自己独立的堆内存空间中
3) 多个对象调用的成员方法来源是相同的(解释:存放在同一块空间)

 

3、多个对象指向相同内存图

 

当多个对象的引用指向同一个内存空间(变量所记录的地址值是一样的)
只要有任何一个对象修改了内存中的数据,随后,无论使用哪一个对象进行数据获取,都是修改后的数据。

 例题

成员变量和局部变量

1 、成员变量

成员变量定义在类中方法外

2 、局部变量

局部变量定义在方法当中

3 、成员变量和局部变量的区别?
区别成员变量局部变量
类中位置不同类中方法外方法内或方法声明上
内存中位置不同堆内存栈内存
生命周期不同随着对象的存在而存在,随着对象的消失而消失随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同有默认初始化值没有默认初始化值,必须先定义,赋值才能使用

例题

封装

1、private关键字

1) private 是一个修饰符,可以用来修饰成员(成员变量,成员方法)
2) 被 private 修饰的成员,只能在本类进行访问
3) 针对 private 修饰的成员变量,如果需要被其他类使用,提供相应的操作:
        提供 get 变量名 () 方法,用于获取成员变量的值,方法用 public 修饰
        提供 set 变量名 ( 参数 ) 方法,用于设置成员变量的值,方法用 public 修饰
例题

 

练习

 

 2、this关键字

this 修饰的变量用于指代成员变量 ,其主要作用是(区分局部变量和成员变量的重名问题)
方法的形参如果与成员变量同名,不带 this 修饰的变量指的是形参,而不是成员变量
方法的形参没有与成员变量同名,不带 this 修饰的变量指的是成员变量
例题

 this内存原理

this 代表当前调用方法的引用,哪个对象调用的方法, this 就代表哪一个对象

 

 3、封装

面向对象三大特征

1. 封装  2. 继承   3. 多态

封装的原则

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量private,提供对应的getXxx()/setXxx()方法

封装的好处

通过方法来控制成员变量的操作,提高了代码的安全性,把代码用方法进行封装,提高了代码的复用性

构造方法的格式

public class类名{

        修饰符  类名 (参数) {

        }

}

修饰符:一般都是public

构造方法的调用

构造方法在创建对象的时候调用执行

举例:Student s = new Student();

例题

           

                 

 构造方法注意事项

构造方法也是方法,可以进行重载
可以使用有参构造方法,对成员变量进行赋值,达到初始化数据的效果
如果没有定义构造方法,系统将给出一个默认的无参数构造方法,如果定义了构造方法,系统将不再提供默认的构造方法
建议:今后空参有参都手动给出

练习

一个标准类的制作和测试

 

 API

API

1、什么是 API

      应用程序编程接口

      说白了就是java提供好的一些核心类库

    2、如何查看API帮助文档?

      打开API帮助文档

      点击索引选项卡

      在搜索框输入要搜索的类

      查看该类中的组成部分

例题

 String

String 类代表什么?

         代表字符串类型的对象

String 类在哪个包下?

          java.lang包,使用不需导包

String 类的特点有哪些?

         字符串不可改变、它的值在创建后不可更改

          虽然值不可改变、但是值可以被共享使用

         字符串效果上相当于字符数组,但底层原理是字节数组

Sting 类常用构造方法

        String()  创建一个空的字符串对象,不含任何内容

        String(char[] arr根据字符数组创建字符串对象

        String(byte[] arr根据字节数组创建字符串对象

方便的定义字符串格式

        String 变量名 = “字符串内容

例题

String对象的特点

通过 String 类构造方法创建字符串对象的特点

      构造方法每创建一次对象,都会在堆内存中开辟不同的对象空间。

      所以,每new一次,都是不同的对象(内存地址不同)

直接定义字符串变量的方式特点

      直接定义的字符串内容会存储到堆内存中的常量池里。

      字符串内容如果相同,则直接共享使用。

 字符串的比较

== 号的功能

     ==号如果比较的是基本数据类型,比较的是具体的值

     ==号如果比较的是引用数据类型,比较的是对象的地址值

字符串内容比较

     比较字符串内容是否相同,使用equals()方法

例题

 StringBuilder

String 字符串在拼接时有什么特点?

      每拼接一个字符串,都会产生新的字符串对象。

      这种操作会比较浪费内存空间!

StringBuilder 类有什么特点?

      StringBuilder是一个字符串缓冲区。

      它可以在原有的空间上继续拼接字符串内容

StringBuilder 常用的构造方法有哪些?

     StringBuilder()              创建一个内容为空的字符串缓冲区对象

     StringBuilder(String s)  根据指定字符串创建字符串缓冲区对象

StringBuilder的添加和反转方法

StringBuilder 的添加方法:

      StringBuilder append(Object obj)   向缓冲区添加内容

StringBuilder 的反转方法:

      StringBuilder reverse()       将缓冲区内容进行反转

链式编程:

      当一个方法调用后、返回的还是该对象本身,就可以连续调用该方法

 StringBuilder与String相互转换

StringBuilder 如何转换为 String

     调用toString()方法即可返回一个字符串

String 如何转换为 StringBuilder

     通过StringBuilder的有参构造方法将字符串添加即可

ArrayList 

介绍

ArrayList 集合的介绍

      ArrayList集合是一个长度可变的容器

ArrayList 集合的特点

      ArrayList集合的长度是可变的

      ArrayList集合底层是数组实现

什么是泛型

      泛型是一种广泛的数据类型,用于约束集合存储的元素数据类型

      例如:

         我们想存储字符串类型的数据,就可以这样写:ArrayList<String>

         我们想存储学生类型的数据,就可以这样写:ArrayList<Student>

ArrayList的构造和添加

ArrayList 集合的构造方法:

     public ArrayList()    创建一个空的集合容器

ArrayList 集合的添加方法:

     public boolean add(E e)          向集合中添加元素

     public void add(int index,E e)  向集合中指定索引位置添加元素

     注意:索引参数要保证在集合索引长度范围之内

例题

 ArrayList常用方法

ArrayList 常用方法:

     public boolean add(E e)            向集合中添加元素

     public void add(int index,E e)   向集合中指定索引处添加元素

     public boolean remove(Object obj删除集合中指定元素

     public E remove(int index)        删除集合中指定索引处的元素

     public E set(int index,E e)          修改集合中指定索引处的元素

     public E get(int index)               获取集合中指定索引处的元素

     public int size()                          获取集合的长度

例题

 学生管理系统

  

继承

继承的概念

         继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重  新定义,以及 追加属性和方法

实现继承的格式

     继承通过extends实现 格式:class 子类 extends 父类 { } 举例:class Dog extends Animal { }

继承带来的好处

        继承可以让类与类之间产生关系,子父类关系,产生子父类后,子类则可以使用父类中非私有的成员。

        提高了代码的复用性(多个类相同的成员可以放到同一个类中)

        提高了代码的维护性(如果方法的代码需要修改,修改一处即可)

继承的弊端

        继承让类与类之间产生了关系,类的耦合性增强了,当父类发生变化时子类实现也不得不跟着变化,削 弱了子类的独立性

继承的使用

        使用继承,需要考虑类与类之间是否存在is..a的关系,不能盲目使用继承

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值