zoukankan      html  css  js  c++  java
  • Java学习---JAVA的类设计

    基础知识

         JAVA是由C/C++语言发展而来的纯面向对象语言,其基本元素包括:简单数据类型 和 复合数据类型(即类)。类是对客观事物的抽象描述,它有面向对象的四个特点,即:封装性、继承性、多态性和通信相关性。

         类由属性和方法构成,类、属性、方法都通过修饰符限制如何使用。常用的修饰符包括:public、protected、private、static、final、abstract等等。JAVA语言中除了类以外,还存在抽象类和接口,其中抽象类是使用abstract修饰的类,其中包含了抽象的方法(即只有方法的申明,无方法体,而且抽象的方法都需要被其子类所覆盖),接口的关键字是interface,它仅包含使用finall修饰的成员变量和抽象方法。类之间的关系是继承(extends),接口之间的关系也是继承(extends),类与接口之间的关系是实现(implements)。

         在类中的方法有三类,分别是:构造方法、普通方法和主方法。构造方法是对象初始化的方式,一般存在多个构造方法,根据带入的参数构造不同的对象。主方法是程序的入口,其固定格式为:public static void main(String [] args)。类中的方法存在多态性,分别是:重载和覆盖。其中,重载是在同一类中具有相同名称的方法,而参数的类型和个数不同;覆盖是具有继承关系的父类和子类之间具有相同名称的方法,且参数的类型和个数,以及返回值均相同。 

    使用类来声明对象时,就是产生不同的个体,即实例化。且需要使用new操作符来申请内存空间。当该对象不再需要时,JAVA有三种垃圾回收方法,分别是:JVM周期性自动回收、调用System.gc()方法 和 定义finalize()析构方法。

    JAVA语言标识符命名规则如下:

    JAVA语言的标识符由字母、数字、下划线(_)、美元符号($)组成,并且首字符不能使用数字;

    不能把关键字作为标识符

    标识符通常由多个有意义的英文单词构成,且长度一般在30个字符以内

    为了保证良好的编程风格,清晰标识各类符号,Java语言有如下编程规范:

    ● 类名和接口名:单词首字母大写,其余字母小写,如SamDoc;

    ● 方法名和变量名:首单词小写,其余单词的首字母大写,其余字母小写,如bothEyesOfDoll;

    ● 包名:字母全部小写,如com.abc.dollapp;

    ● 常量名:采用大写形式,单词之间以下划线“_”隔开,如DEFAULT_COLOR_DOL。

    所有的关键字都是小写。

    代码实例

    举例矩形类 长方体类,仿制圆形类和柱形类

     1 class rectangle{
     2   double width;
     3   double length;
     4   public rectangle(){
     5     width = 10;
     6     length = 10;
     7   }
     8   public rectangle(int width, int length){
     9     this.width = width;
    10     this.length = length;
    11   }
    12   public rectangle(double width, double length){
    13     this.width = width;
    14     this.length = length;
    15   }
    16   public double getCircle(){
    17     return 2*(width + length);
    18   }
    19   public double getArea(){
    20     return width * length;
    21 } }
    22 
    23 class cube extends rectangle{
    24   double height;
    25   public cube(){
    26     width = 10;
    27     length = 10;
    28     height = 10;
    29   } 
    30   public cube(double width1, double length1, double height){
    31     width = width1;
    32     length = length1;
    33     this.height = height;
    34   } 
    35   public double getVol(){
    36     return widht * length * height;
    37   }
    38   public double getArea(){
    39     return 2*(width * length + width * height + length * height);
    40   }
    41 }
    42 class example{
    43   public static void main(String [] args){
    44     rectangle r = new rectangle(20, 20);
    45     cube c = new cube(11, 22, 33);
    46     System.out.println("矩形的面积" + r.getArea());
    47     System.out.println("长方体的体积" + c.getVol());
    48     System.out.println("长方体的面积" + c.getArea());
    49 } }
    View Code

    设计根据年月输出当月日历的程序,对比以下2个关于日期程序 

     1 public class date{                 //该类只存在一个主方法,相当于一个C语言程序
     2 public static void main(String [] args){
     3      int year = 2013;
     4      int month = 3;
     5      int day = 0;
     6      boolean isLeap = false;
     7 
     8      if((year % 400 == 0) ||  ((year % 100 == 0) && (year % 4 == 0))){
     9            isLeap = true;
    10      } else {
    11            isLeap= false;
    12      }
    13      switch(month){
    14        case 1:  case 3:  case 5: case 7: case 8: case 10:  case 12: 
    15          day = 31;
    16          break;
    17        case 2:
    18           day = if(isLeap)?29:28;
    19           break;
    20        default:
    21           day = 30;
    22           break;
    23      }
    24      for(int i=0; i<day; i++){
    25        if(i % 7 == 0)System.out.println();    
    26        System.out.print((i+1)+"天"+"/t");
    27  } } }
    View Code

    按照本班同学为例,编写人类,同学类

     1 class human{
     2   String name;
     3   Int age;
     4   Char gender;
     5   public human(String name, int age, char gender){
     6      This.name = name;
     7      This.age = age;
     8      This.gender = gender;
     9   }
    10   public void setName(String name){
    11 This.name = name;
    12   }
    13   public void setAge(int age){
    14 This.age = age;
    15   }
    16   public void setName(char gender){
    17 This.gender = gender;
    18   }
    19   public String getName(){
    20 return name;
    21   }
    22   public int getAge(){
    23 return age;
    24   }
    25   public char getGender(){
    26 return gender;
    27   }
    28   public void showMessage(){
    29     System.out.println(“姓名:”+name+”,年龄:”+age+”,性别”+gender);
    30 } }    
    31 //学生类
    32 class classmate extends human{
    33   String school;
    34   public classmate(String name1, int age1, char gender1, String school){
    35      name = name1;
    36      age = age1;
    37 gender = gender1;
    38 this.school = school;
    39     ...
    40   }
    View Code
  • 相关阅读:
    Fruit HDU
    排列组合 HDU
    XOR and Favorite Number CodeForces
    BZOJ-6-2460: [BeiJing2011]元素-线性基
    CDH 安装与部署
    Apache Hadoop集群搭建
    大数据架构与技术选型
    项目落实方案选择思考(KUDU)
    JAVA 高级篇
    大数据就业岗位
  • 原文地址:https://www.cnblogs.com/ftl1012/p/9347545.html
Copyright © 2011-2022 走看看