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。
所有的关键字都是小写。
代码实例
举例矩形类 和 长方体类,仿制圆形类和柱形类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 } }
设计根据年月输出当月日历的程序,对比以下2个关于日期程序
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 } } }
按照本班同学为例,编写人类,同学类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
-------------------------------------------
个性签名: 所有的事情到最後都是好的,如果不好,那說明事情還沒有到最後~
本文版权归作者【小a玖拾柒】和【博客园】共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利!