JavaSE-07 类

习要点

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

面向过程

程序

程序的概念

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

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

计算机程序

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

面向过程程序的定义

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

变量

  • 指向一个对象或包含一个值的标识符,都可以称为变量。
  • 当变量的类型为基本型别(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. 狗狗有品种选择、企鹅性别可选

原文地址:https://www.cnblogs.com/rask/p/8252919.html

时间: 2024-10-29 06:22:58

JavaSE-07 类的相关文章

javaSE 常用类

javaSE 常用类 基本数据类型的包装类 java为了方便,给每一个基本数据类型 封装了一个类 double Double float Float byte Byte short Short int Integer long Long boolean Boolean char Character 判断后缀名 .endsWith 返回指定索引处的 char 值 charAt 返回他的下标 indexOf 替换字符 replace 给定正则表达式的匹配拆分字符串 split 返回一个新的字符串,它

JavaSE 匿名类(Anonymouse Inner Class)实现

{相关信息}当一个内部类只创建一个对象,并且该类继承一个父类或者实现一个接口的时候,才考虑使用匿名类. {代码实现} package sup.orange.learn; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent

OC 07 类的扩展

1.NSDate的使用 NSDate是Cocoa中?于处理?期和时间的基础类,封装了某?给定的时刻(含日期,时间,时区) 注意NSLog(@“%@”,nowDate);?论你是哪个时区的时间,打印时总是打印对应的0时区时间. 2.NSTimelnterval NSTimelnterval(即double类型) 常用方法: 可以使用-initWithTimeIntervalSinceNow:方法传?一个NSTimeInterval参数,创建一个 NSDate对象   1 // NSDate: 处理

07 类 | 类的静态成员

链接 类里的static cosnt 和 const static成员初始化 这两种写法的作用一样,为了便于记忆,在此值说明一种通用的初始化方法: class Test { public: static const int mask1; const static int mask2; }; const Test::mask1 = 10; const Test::mask2 = 10; //它们的初始化没有区别,虽然一个是静态常量一个是常量静态.静态都将存储在全局变量区域,其实最后结果都一样.可能

【JavaSE】类与类的关系--UML

类(对象/接口)之间的关系 -- UML类图展现 2019-07-14  14:37:19  by冲冲 在面向对象程序设计时,类与类之间的关系主要分为:继承,实现,依赖,关联,聚合,组合等6种关系. 各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚集 > 关联 > 依赖 .其中前两种理解很简单,重点是比较容易混淆的后四种. 1. 继承 -- "a is kind of A" 继承(Generalization):亦称泛化,表示一般与特殊的关系.继承指的是一个

JavaSE File类详细介绍

一.创建文件对象的三种形式 package cn.itcast.file; import java.io.File; public class FileDemo { public static void main(String[] args) { File file=new File("E:\\demo\\a.txt"); File file2=new File("E:\\demo", "a.txt"); File file3=new File(

JavaSE-反射-获取类或者对象的四种方法

1.使用Class类的静态方法Class.forName("xxxx"); 新建一个要想要获取的类 package org.burning.sport.javase.classloader; public class ClassLoaderModel { } package org.burning.sport.javase.classloader; /** * 类的载入方式 */ public class ClassLoaderMain { public static void mai

Java基础15:深入剖析Java枚举类

Java基础15:深入剖析Java枚举类 枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示. 初探枚举类 在程序设计中,有时会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色红.黄.绿组成的集合,一个工作班组内十个职工组成的集合等等,程序中某个变量取值仅限于集合中的元素.此时,可将这些数据集合定义为枚举类型. 因此,枚举类型是某类数据可能取值的集合,如一周内星期可能取值的

Ignite集群管理——基于静态IP的节点发现

Ignite作为分布式内存,集群管理必不可少,Ignite支持基于组播,静态IP,Zookeeper,JDBC等方式发现节点,本文主要介绍基于静态IP的节点发现. 两个最重要的TCP通信设置类: 1. TcpDiscoverySpi 用于设置集群维持与节点发现的tcp通信ip,port. 2. TcpCommunicationSpi 用于设置业务数据(缓存数据)tcp通信的ip,port. 3. 两者的区别与联系 TcpDiscoverySpi用于维持管理集群,交换的是用户不感知的ignite内

算法——一天一道算法题篇——找只出现一次的两个数

找只出现一次的两个数 题目: 一个整型数组里除了两个数字只出现一次之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 举例说明: 现在有一个数组:{1,3,4,2,4,3}; 假设数组元素的规模不是很大,想要找到只出现一次的元素,可以定义一个辅助数组,flag[100];里面存放的是数组元素出现的次数,flag数组的下标表示的是数组:{1,3,4,2,4,3}里的元素. 代码如下: package hello.ant; public class AlogArrayFind2 {