习要点

  • 面向过程
  • 面向对象
  • 抽象
  • 类的构造方法
  • 类中常见的关键字
  • 类的成员方法
  • 类的成员变量

面向过程

程序

程序的概念

程序一词来自生活,通常指完成某些事情的一种既定方式和过程。

可以将程序看成对一系列动作的执行过程的描述。

计算机程序

为了执行某些操作或解决某个问题而编写的一系列有序指令的集合。

面向过程程序的定义

程序=数据+算法+文档;

程序的组织单位为函数,通过函数间的调用实现软件功能。

变量

  • 指向一个对象或包含一个值的标识符,都可以称为变量。
  • 当变量的类型为基本型别(short, byte, int, long, float, double, boolean, char)时,变量的内容是一个值;当变量的类型为 Object 及其子类时,变量的内容是指向一个对象的引用。

流程控制

常见流程控制:顺序、分支选择、循环。

面向对象

什么是对象?

  • 万物皆对象!对象具有属性(静态特性)和行为(动态特性)。
  • 对象object也被称为实例——instance。

什么是面向对象?

程序的世界是虚拟的,面向对象技术利用“面向对象思想”去描述“面向对象的世界”,实现了虚拟世界和现实世界的一致性。更加符合人的思维习惯。

面向对象设计(OOD)和开发程序(OOP)的好处

  • 用户、软件设计人员、软件开发人员之间的交流更加容易和顺畅
  • 提高设计和开发效率

抽象

在软件设计阶段,如何使用面向对象进行程序的设计?

问题:如何在计算机世界描述他们?

  • Java语言是面向对象的语言,在描述以上对象的时候是否要一只只小动物进行描述?虚拟世界和现实世界一对一映射,太繁琐,并不高明。所以面向对象的编程语言使用了class模板,即程序员在写代码的时候使用class去描述他们:对这些动物分类,找出共性,做出模板,当计算机虚拟世界需要具体对象的时候,使用模板生成一个具体对象即可。
  • 把对象抽象出类,就是面向对象的程序设计。

从现实世界抽象出类三步骤

  • 第一步:发现类

  • 第二步:发现类的属性

  • 第三步:发现类的方法

  • 第四步:使用类图描述类

上机练习:使用代码开发电子宠物系统

  1. 系统中有狗狗和企鹅
  2. 系统提供宠物选择  //待完成
  3. 狗狗有品种选择、企鹅性别可选  //待完成

java类模板

[修饰符]  class  类名 {

零到多个构造方法(也称为构造函数、构造器)

零到多个成员变量(也称为属性、字段、域。属性专指带有getter和setter访问器)

零到多个成员方法

}

类的访问修饰符:无、public、final、abstract

注意:没有修饰符的类只在本包中可见。

类的使用

//实例化类

Dog  dog;

dog  =  new Dog();

//访问类中的成员

dog.nickname=”旺旺”;//为成员变量赋值

dog.print();//调用类中的成员方法

 

类的构造方法

构造方法语法分析

[修饰符]  构造方法名(形参列表){

可执行语句;

}

修饰符:public、protected、private

方法名:同类名

private常用于设计单例模式,例如:

public class Dog { 

    private static Dog currentDog = new Dog();    

    public static Dog getDog() { 

        return currentDog; 

    }    

    // Don't let anyone else instantiate this class 

    private Dog() { 

    } 

}

  

构造方法用来构造该类的实例。Java通过new关键字来调用构造方法,从而返回该类的实例。

例如:Dog dog = new Dog();

一个类创建对象的根本途径是通过构造方法构造实例。

如果没有自定义构造方法,系统默认提供一个无参构造方法。如果自定义了构造方法,则系统不再提供无参构造方法。

带参数的构造方法

如果希望在构造一个类的实例的同时完成实例的初始化工作,则可以定义带参数的构造方法。

构造方法的形参名如果和成员变量的名称重复,按照java的规则:局部变量名和成员变量名重复,则局部变量覆盖成员变量。如果需要访问成员变量,则需要在成员变量名之前添加this关键字。

构造方法重载

  • 重载的概念:方法名相同,参数项不同。与方法的返回值,修饰符无关。
  • 构造方法可以重载,普通方法也可以重载。
  • 重载构造方法的调用,形参和实参要一一对应。

构造方法的互相调用

类中常见关键字

this关键字用法

  • this关键字表示当前对象的引用;用以区分同名成员变量。
  • 在构造方法中引用该构造器正在初始化的对象。
  • 在普通方法中引用调用该方法的对象。

static修饰的成员变量和成员方法

  • static修饰的成员变量和成员方法可以通过类名.成员访问。
  • static可以用来修饰代码块。
  • static修饰的成员变量、成员方法、代码块,相应数据和代码保存在内存的静态数据区。
  • static修饰的成员变量、方法、内部类、初始化代码块都是属于类,没有static修饰的都属于实例。

示例代码:

class Web {

    public final static String logo="新浪网";// 类变量

    public static int count = 0;// 类变量

    public String ip = null;// 实例变量

    public Web(String ip) {

        count++;

        // this.count++;//提示通过static方式访问

        this.ip = ip;

    }

    /** 类方法:统计网站访问人数 */

    public static void printCount() {

        System.out.println("欢迎访问"+logo);

        System.out.println("当前访问人数:" + count);       

    }

    /** 实例方法:输出当前远程用户ip地址 */

    public void printIp() {

        System.out.println("当前登录ip为:" + ip);  

        System.out.println("-------------------------\n");

    }

}

/** 测试类 */

public class StaticDemo {

    public static void main(String[] args) {

        Web local1 = new Web("10.12.1.3");

        Web.printCount();

        local1.printIp();

        Web local2 = new Web("192.168.1.2");

        Web.printCount();

        local2.printIp();

        Web local3 = new Web("20.38.4.5");

        Web.printCount();

        local3.printIp();

        Web local4 = new Web("121.124.13.32");

        Web.printCount();

        local4.printIp();

        Web local5 = new Web("168.77.88.44");

        Web.printCount();

        local5.printIp();

    }

}

  

final修饰的成员变量

  • 用final修饰的成员变量称为常量。
  • static final 变量类型 变量名 : 静态常量。

类的成员方法

语法格式

[修饰符]  方法返回值类型  方法名( 形参列表 ) {

方法执行语句;

}

修饰符

public、protected、private、static、final、abstract。

其中public、protected、private只能选择其一,abstract与final只能出现其一;他们都可以和static组合起来修饰方法。

返回值

返回值需要使用return语句返回结果,结果的类型必须和返回值类型相匹配。如果没有返回值,则方法的返回值类型必须为void。

public class Test { 

   public int age;

   public Test grow(){

       age++;

       return this;//返回当前对象

   }

   public static void main(String[] args) {

       Test t=new Test();

       t.grow().grow().grow().grow();

       System.out.println("age="+t.age);

   }

}

  

类中方法的调用

  • 类方法只能调用另外的类方法,语法格式:类名.方法名。类名可省略。
  • 实例方法间的调用,语法格式:对象名.方法名。实际写成this.方法名。this可省略。
  • 实例方法可以调用类方法(static修饰的方法)。
  • 方法传递参数的机制(实参是如何传递参数给形参的?)。
  • java类中的方法都是按值方式传递参数的,即传递实参的副本给形参。
  • 基本类型传递值,引用类型传递对象的地址(不是对象的副本)。
  • String类型数据,如果是定义为双引号类型的数据,则按照传值方式传递数据,如果采用构造方式构建的字符串,则传递字符串对象的引用。

形参个数可变的方法

在定义方法时,如果在最后一个形参的类型后增加三个点(…),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。

public  static  void  targs(int  a , String … names){

        for(String  item : names){

       System.out.println(item);

}

}

 

注意:可变个数形参一个方法中只能有一个,并且要放在方法参数列表最后。

类的成员变量

语法格式

[修饰符]  类型  成员变量名 [=默认值];

修饰符

public、protected、private、static、final

其中public、protected、private只能选择其一,可以与static、final组合起来修饰成员变量。

成员变量和局部变量

成员变量:实例变量(不以static修饰的变量)、类变量(static修饰)

局部变量:形参、方法局部变量、代码块内局部变量

实际开发中尽量避免通过实例访问类变量。

上机练习:使用代码开发电子宠物系统

  1. 系统中有狗狗和企鹅  //已完成
  2. 系统提供宠物选择
  3. 狗狗有品种选择、企鹅性别可选

最新文章

  1. python批量进行文件修改操作
  2. aliyun source.list
  3. 数论 UVALive 2756
  4. UIWebView的使用
  5. MYSQL 下一些常用操作命令:新建用户、修改密码、修改登录host等
  6. CSDN中根据文章自动生成文章目录
  7. hdu1880
  8. UVA 1658 Admiral 海上将军(最小费用流,拆点)
  9. CentOS上安装FastDFS分布式文件系统
  10. 使用StackExchange.Redis 连接redis的pipeline命令使用
  11. IIS 设置
  12. kfrobotaidlog查找
  13. Node总结 模块机制
  14. SimpleReflection
  15. 《机器学习基石》第一周 —— When Can Machine Learn?
  16. 批量删除Redis中的key
  17. 小程序获取openid和unionid java实现
  18. Java虚拟机内存配置
  19. AC日记——【模板】树链剖分 洛谷 P3384
  20. Dwarves, Hats and Extrasensory Abilities Codeforces - 1063C

热门文章

  1. 【HDU 2196】 Computer
  2. 2018.10.20 XMYZ Day1总结
  3. c#截屏功能的实现
  4. JEDEC标准(JESD216)S FDP对串行Flash在系统中的应用
  5. HTML标签防XSS攻击过滤模块--待优化
  6. springboot(九) Cache缓存和Redis缓存
  7. 在JS/jQuery中,怎么触发input的keypress/keydown/keyup事件?
  8. Android网络状态监控
  9. 设计模式 -- Abstract Factory 抽象工厂
  10. 公众号如何获取已关注用户的unionid的问题