• Java 类


      面向过程的结构化程序设计的弊端:1.缺乏对数据的封装;2.数据和方法的分离。

    1.面向对象

    1)什么是抽象数据类型

      将不同类型的数据的集合组成一个整体用来描述一种新的事物。

    2)什么是类

    • 类定义了一种抽象数据类型
    • 类不但定义了抽象数据类型的组成(成员变量),同时还定义了可以对该类型实施的操作(方法)

    3)成员变量和方法

      类中可以包含成员变量和方法;

    • 成员变量:所有对象所共有的属性/特征
    • 方法:所有对象所共有的行为

    案例1:创建一个员工类

    Emp{
    	String name;
    	char gender;
    	int age;
    	double salary;
    }
    

       在这个示例中,定义了Emp类型的组成,其中(name、gender、age、salary)这些变量成为成员变量。name用来存放员工的姓名、gender用来存放员工的性别、age用来存放员工的年龄、salary用来存放员工的工资。

      定义了Emp类后,提高了代码的模块化以及代码的复用性,但依然存在问题,如:打印信息的方法只能针对Emp数据操作,属于Emp自身的方法,需要实现数据和方法(对该类型数据的操作)的统一。

    4)成员变量初始化

    • 对象创建后,其成员变量可以按照默认的方式初始化
    • 初始化对象成员变量时,其默认值的规则如下表
    成员变量类型 默认初始值
    byte、short、int、long、float、double 0                                   
    boolean型 false
    char型 /u0000
    引用类型 null

     

     

     

     

     

    5)定义类的方法

      方法是用于描述对象的行为,封装对象的功能。

    一个包含成员变量和方法的类语法:

    class 类名{

      成员变量类型  成员变量;

      修饰词  返回值类型  方法名(参数列表){

      方法体;

      }

      ...

    }

    6)创建对象

    • 类定义完成后,可以使用new关键字创建对象,创建对象的过程通常成为实例化
    • new运算的语法:new 类名();

    案例2:创建一个员工对象

    public class Test {
    	public static void main(String[] args) {
    		Emp e = new Emp();
    	}
    }
    

     

    7)引用类型变量

    • 为了能够对实例化的对象进行访问控制,需要使用一个特殊的变量——引用(如上例中的e)
    • 引用类型变量可以存放该类对象的地址信息,通常成为“指向该类的对象”;当一个引用类型变量指向该类的对象时,就可以通过这个变量对对象实施访问。
    • 除8种基本类型之外,用类、接口、数组等声明的变量都称之为引用类型变量,简称“引用”。

    8)访问对象的成员变量、调用方法

      可以通过引用访问对象的成员变量或调用方法

    public class Test {
    	public static void main(String[] args) {
    		Emp e = new Emp();
    		e.name = "Tom";
    		e.gender = '男';
    		e.age = 29;
    		e.salary = 5000;
    	}
    }
    

    9)引用类型变量的赋值

    • 引用类型变量存储的是对象的地址信息,相同类型的引用类型变量之间也可以相互赋值
    • 引用类型变量之间的复制不会创建新的对象,但有可能会使两个以上的引用指向同一个对象

     

    案例3:引用类型之间赋值

    public class Test {
    	public static void main(String[] args) {
    		Emp e = new Emp();
    		e.name = "Tom";
    		e.gender = '男';
    		e.age = 29;
    		e.salary = 5000;
    		System.out.println(e.name);  //Tom
    		Emp f = e;
    		f.name = "Jerry";
    		System.out.println(e.name);  //Jerry
    	}
    }
    

      由上例可以发现,引用类型之间的赋值与基本类型之间的赋值不一样,引用类型之间赋值(画“=”号)指向同一个对象,对一个引用的修改会影响另一个引用。

     

    10)null

    • 对于引用类型变量,可以对其赋值为null,null的含义为“空”,表示还没有指向任何对象
    • 当一个引用的值为null时,如果通过引用访问对象成员变量或者调用方法是不合逻辑的,此时会产生NullPointerException空指针异常

     

     

    案例4:创建一个引用赋值为null

    public class Test {
    	public static void main(String[] args) {
    		Emp e = null;
    		e.name = "Tom";
    		System.out.println(e.name);
    	}
    }
    
    /*
    运行结果:
    Exception in thread "main" java.lang.NullPointerException
    	at test.Test.main(Test.java:8)
    */
    

    案例5:类的演示

    要求:创建一个员工类,定义成员变量包含name、gender、age、salary, 定义方法打印员工的信息,创建两个员工对象并打印出信息。

    public class Emp {
    	//定义成员变量
    	String name;
    	char gender;
    	int age;
    	double salary;
    
    	public  void empPrint(){   //定义方法打印员工信息
    		System.out.println("姓名:"+name+"性别:"+gender+"年龄:"+age+"薪资:"+salary); 
    	}
    	
    	public static void main(String[] args) {
    		Emp e = new Emp();
    		e.name = "Tom";
    		e.gender = '男';
    		e.age = 29;
    		e.salary = 5000;
    		e.empPrint();       //调用方法打印员工信息
    		
    		Emp ee = new Emp();
    		ee.name = "Jerry";
    		ee.gender = '女';
    		ee.age = 25;
    		ee.salary = 6000;
    		ee.empPrint();
    	}
    }
    
    
    /*
    运行结果:
    姓名:Tom性别:男年龄:29薪资:5000.0
    姓名:Jerry性别:女年龄:25薪资:6000.0
    */
    

      

     

  • 相关阅读:
    假如
    天涯 好文章
    Widget中PendingIntent和RemoteViews用法
    申请android google map API key
    初步学习:Eclipse3.6开发C/C++程序
    Android getWidth和getMeasuredWidth的正解
    intent intentfilter
    mapview 生成apikey
    ViewConfiguration.getScaledTouchSlop () 用法
    Android JNI知识简介
  • 原文地址:https://www.cnblogs.com/jmwm/p/6920697.html
Copyright © 2020-2023  润新知