Java 使用面向对象开发

2018-02-09 19:24:48来源:cnblogs.com作者:房上的猫人点击

分享

对象就是实际存在的一些东西
程序来源于生活
软件出现的目的:
用计算机的语言描述现实世界
用计算机解决现实世界的问题
面向对象设计和开发程序的好处:
交流更加流畅
提高设计和开发效率
从现实中抽象出类分三步:
1.找出它的种类
根据“对象”的特征抽象出具体的“类”
2.找出她的属性(静态的特征(变量))
3.找出它的行为(动态的,(方法))

抽象的原则:
把多个对象抽取出来作为一个类
类图:
“+”:public
“-”:private

类图好处:
清晰,直观,方便程序的开发和设计

构造方法和重载

构造方法:
作用:给成员属性默认赋予初始值

语法:
访问修饰符  构造方法名(于类名相同)(可以指定参数)
{
      //初始话代码
}
//无返回值类型

当类实例化时,系统会自动为我们分配一个无参构造

当自定义构造方法时,系统将不再提供默认无参构造

有参构造就是在无参构造的基础上在小括号内加了参数

this关键字是对一个对象的默认引用,这里用以区分同名成员变量

方法重载:
方法名相同
参数项不同(个数不同,类型不同,顺序不同)
与返回值,访问修饰符无关
在同一个类中


static关键字
static修饰变量的叫做静态变量 或者 类变量
普通变量叫做:实例变量 普通成员变量
static 修饰方法叫做静态方法

用static修饰的属性或方法,可以直接通过类名来访问,无需new出实例里对象

用final修饰的变量称为常量,其值固定不变
例:
static final string NAME=“房上的猫”;
final:常量关键字(规范:变量名大写)

静态调用:
1.实例化对象    对象.静态方法();对象.静态属性;
2. 类名.属性;类名.方法();

静态代码块:只能给static的属性赋值
static{
}
注意:代码块作用是给静态属性赋予初始值使用的
永远都比构造方法先执行一步

 普通属性: 实例变量
在程序中任何变量或者代码都是在 编译时 由系统自动分配内存来存储的
静态属性:类变量
所谓静态就是指在编译后所分配的 内存会一直存在
直到程序退出   内存才会释放这个空间,也就是只要程序运行,那么这块内存就会一直存在

static的方法有以下几条限制:
它们仅能调再其他的static 方法。
它们只能访回static数据

static可以用来修饰属性,方法和代码块

this关键字的用法:
调用属性
调用方法
调用构造方法:如果使用,必须是构造方法中的第一条语句


总结:

从现实世界抽象出类
找出名词确定类、属性
找出动词确定方法
剔除与业务无关的属性和方法
方法重载的规则
方法名相同
参数项不同
与访问修饰符和返回值无关

 

废话不多说,上例子:

/** * 企鹅类 * @author xjz * */public class Penguin {   static String name;//静态成员变量  类变量    int health;//实例变量  普通成员变量    int love;    String sex;   static final String PENGUIN_SEX1="Q仔";//性别   static final String PENGUIN_SEX2="Q妹";//性别      public static void showPeng(){       System.out.println("静态方法中名称为:"+name);   }  // 静态代码块中只能给static的属性赋值    static{                name="初始值";        System.out.println("我是静态代码块");    }          /**     * 无参数构造:     * 1)方法名与类同名     * 2)没有返回值     * 3)与返回的修饰符无关     * 作用:给成员属性默认赋予初始值     */    public Penguin(){        name="无名氏";        health=100;        love=10;            }        /**     * 注意:参数变量和成员变量同名,必须使用this给成员变量指定      *  this本类中的对象      * @param name     * @param health     * @param love     * @param sex     */    public Penguin(String name,int health,int love,String sex){        this.name=name;        this.health=health;        this.love=love;        this.sex=sex;    }            public void print()    {            System.out.println("宠物自白:我的名字叫"+this.name+"/n健康值为:"+health+"/n和主人的亲密关系"+love+"我是一只"+this.sex);                        }}
企鹅类
public class Dog {    //属性              //昵称            String name="无名氏";            //健康值            int health=100;            //亲密度            int love=0;            //品种            String strain="聪明的拉不拉多犬";        /**     * 输出具体的狗类对象的信息     */            public void print()            {            System.out.println("宠物自白:我的名字叫"+this.name+"/n健康值为:"+health+"/n和主人的亲密关系"+love+"我是一只"+this.strain);                                                }}
狗狗类
public class Test {    /**     * @param args     */    public static void main(String[] args) {        Penguin  peng=new Penguin();//系统默认会分配一个无参数构造 ,调用无参数构造赋值        peng.print();                Penguin peng1=new Penguin("楠楠", 100,90,"Q仔");        //自定义一个有参数构造,系统就不在默认分配无参数构造,使用无参数构造时,必须手动添加无参数构造的定义        peng1.print();                //调用静态的方式1:实例化对象,对象.静态方法();  对象.静态属性;        peng.showPeng();        peng.sex=peng.PENGUIN_SEX1;                //调用静态的方式2: 类名.属性或方法         Penguin.name="兰兰";        Penguin.showPeng();                                }}
测试类(main()方法)

微信扫一扫

第七城市微信公众平台