目录
1、面对对象设计的基本步骤
1、发现类
2、发现类的属性
3、发现类的方法
2、使用类图描述面向对象设计
程序设计是一个逐步调整、完善的过程,类图是面向对象设计的图纸,使用图纸进行设计方便沟通和修改。
3、绘制类图工具
1、Visio
Visio是office软件系列中负责绘制流程图和示意图的软件,是一款便于IT和商务人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。
2、Rose
Rational Rose是Rational公司出品的一种面向对象的统一建模语言的可视化建模工具。用于可视化建模和公司级水平软件应用的组件构造。
3、Power Designer 是Sybase的企业建模和设计解决方案,采用模型驱动方法,将业务与IT结合起来,可帮助部署有效的企业体系架构,并未研发生命周期管理提供强大的分析与设计技术。
4、构造方法
1、构造方法是一种特殊的方法, 它是与一个与类同名且无返回值的类型的方法。
2、构造方法的功能主要是完成对象的初始化。
3、对象的创建就是通过构造方法来完成的,当类实例化一个对象时会自动调用构造方法。
访问修饰符 构造方法 (数据类型 参数1,数据类型 参数2,......){
//初始化代码
}
在没有给类提供任何构造方法时,系统会提供一个默认的无参构造方法。一旦提供了自定义的构造方法,系统将不再提供默认的无参构造方法。如果要使用它,则必须要手动添加
在没有给类提供任何构造方法时,系统会提供一个默认无参构造方法。一旦提供了自定义构造方法,系统将不再提供这个无参构造方法。如果要使用它,则必须手动添加
自定义图参构造:
public class Penguin {
String name = "无名氏"; // 昵称
int health = 100; // 健康值
int love = 0; // 亲密度
String sex = "Q仔"; // 性别
final String SEX_MALE = "雄";
final String SEX_FEMALE = "雌";
public Penguin() {
name = "楠楠";
love = 20;
sex = SEX_MALE;
}
}
方法重载:
在同一个类中,方法名相同,通过参数个数和类型的不同来区分不同的方法,方法的重载跟返回值类型和修饰符无关。
方法重载的优点:
方法重载其实是对一般方法的一种升级,可以根据参数的不同,采用不同的实现方法,而且不需要编写多个名称,只要记住一个方法即可。
实例构造方法重载:
package come.bdqn.Exercise;
public class Excise1 {
/**
* 名字属性
*/
String name;
/**
* 年龄属性
*/
int age;
/**
* 性别属性
*/
char gender;
//带两个参数的方法
public void Excise1(String name,int age){
this.name = name;
this.age = age;
System.out.println(name + "\t" + age);
}
//带三个参数的方法,方法名相同个数不同
public void Excise1(String name,int age,char gender){
this.name = name;
this.age = age;
this.gender = gender;
System.out.println(name + "\t" + age + "\t" + gender);
}
//带三个参数的方法,方法名相同顺序不同
public void Excise1(String name,char gender,int age){
this.name = name;
this.gender = gender;
this.age = age;
System.out.println(name + "\t" + gender+ "\t" + age );
}
}
在创建对象中的使用根据参数不同可以重复使用
package come.bdqn.Exercise;
public class TestMethod {
public static void main(String[] args) {
//创建对象
Excise1 excise1 = new Excise1();
//调用方法
excise1.Excise1("张三",20);
excise1.Excise1("李四",18,'男');
excise1.Excise1("王五",'男',21);
}
}
this关键字是对一个对象的默认引用,这里用以区分同名成员变量
5、static 修饰符
this关键字是对一个对象的默认引用,这里用以区分同名成员变量
static可以用来修饰属性、方法和代码块
static修饰的变量属于这个类所有,即由这个类创建的所有对象共用同一个static变量。
通常把static修饰的属性和方法称为类属性和类方法,不使用static修饰的属性和方法属于单个对象,通常称为实例属性和实例方法
实例:
package come.bdqn.Exercise;
/**
* static
*/
public class Exercise2 {
static int i = 20;
static int m = 30;
static{
i = 10;
/*System.out.println("i的初始值是:" + i);*/
System.out.println("test static 1");
}
static{
i = 30;
/*System.out.println("i的初始值是:" + i);*/
System.out.println("test static 2");
}
int j;
int k = 25;
public Exercise2(){
j = 20;
System.out.println("j的初始值是:" + j);
System.out.println("对象创建时i的值是:" + i);
getNum();
}
public static void getNum(){
System.out.println("得到的i的值:" + i);
//get();
}
public void get(){
//static int i = 0;
}
public static void main(String[] args) {
System.out.println(Exercise2.i);
Exercise2 staticTest = new Exercise2();
Exercise2 staticTest2 = new Exercise2();
System.out.println(Exercise2.i);
Exercise2.i -= 5;
System.out.println(Exercise2.i);
System.out.println("**************************");
System.out.println(staticTest.k);
staticTest.k -= 5;
System.out.println(staticTest2.k);
System.out.println("i的值为:" + Exercise2.i);
Exercise2.getNum();
//System.out.println("m的值是:" + staticTest.);
System.out.println("k的值是:" + staticTest.k);
}
}
6、static修饰符总结
在加载类的过程中,完成静态变量的内存分配,再执行静态块,两者是在创建对象之前执行的。
类属性和类方法可以通过类名和对象名访问,实例属性和实例方法只能通过对象名访问。
类方法只能访问类属性和其他类方法,不能使用this和super关键字。
实例方法中不可以定义static变量
static修饰和非static修饰的区别
static\非private修饰符 | 非static、private修饰符 | |
---|---|---|
属性 | 类属性、类变量 | 实例属性、实例变量 |
方法 | 类方法 | 实例方法 |
调用方法 | 类名.属性 类名.方法·() 对象.属性 对象.方法 |
对象.属性 对象.方法 |
归属 | 类 | 单个对象 |
7、封装
封装:面向对象三大特征之一
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 。
封装的两大原则:
1、把尽可能多的东西藏起来,对外提供便捷的接口
2、把所有的属性藏起来
1、封装的好处
便于使用者正确使用系统,防止错误修改属性
有助于系统之间的松耦合,提高系统独立性
提高软件的可重用性
降低了构建大型系统的风险
2、封装的具体步骤
1、修改属性的可见性——–设为private
2、创建共有的getxxx/setxxx方法——用于属性的读写
3、在getxxx/setxxx方法中加入属性控制语句—-对属性值的合法性进行判断
3、封装时会用到多个权限修饰符来修饰成员变量和方法
作用域 修饰符 |
同一个类中 | 同一个包中 | 子类中 | 任何地方 |
---|---|---|---|---|
private | 可以 | 不可以 | 不可以 | 不可以 |
默认修饰符 | 可以 | 可以 | 不可以 | 不可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
public | 可以 | 可以 | 可以 | 可以 |
this关键字是对一个对象的默认引用。在每个实例方法内部,都有一个this引用变量,指向调用这个方法的对象。
1、调用属性
使用this调用成员变量,解决成员变量和局部变量的同名冲突
this.health = 100;
this.name = "二哈"
2、调用方法
使用this调用成员方法,this可以省略,直接调用print();
this.pritn();
3、调用构造方法
如果使用this调用重载的构造方法,只能在构造方法中使用,必须是构造方法的第一条语句
this();
this("二哈",100,100,"雄")
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/93383.html