Java 使用面向对象开发

对象就是实际存在的一些东西 程序来源于生活 软件出现的目的: 用计算机的语言描述现实世界 用计算机解决现实世界的问题 面向对象设计和开发程序的好处: 交流更加流畅 提高设计和开发效率 从现实中抽象出类分三步: 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();
        
        
    
        
    }

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

从Zero到Hero,一文掌握Python关键代码

本文整体梳理了 Python 的基本语法与使用方法,并重点介绍了对机器学习十分重要且常见的语法,如基本的条件、循环语句,基本的列表和字典等数据结构,此外还介绍...

2997
来自专栏小樱的经验随笔

【批处理学习笔记】第十七课:截取字符串

    在批处理中,set的功能有点繁杂:设置变量、显示环境变量的名及值、做算术运算、等待用户的输入、字符串截取、替换字符串,是我们常用的命令之一。   在字...

3204
来自专栏灯塔大数据

塔秘 | 从Zero到Hero,一文掌握Python关键代码

前 言 本文整体梳理了 Python 的基本语法与使用方法,并重点介绍了对机器学习十分重要且常见的语法,如基本的条件、循环语句,基本的列表和字典等数据结构,此...

3438
来自专栏java一日一条

Java习惯用法总结

741
来自专栏老九学堂

【学习】Java微课堂之for循环

主要知识点 ? ? for循环注意要点 本讲视频中讲了for循环的要点以及三大循环的区别,主要笔记如下: 1.for循环是循环控制结构中使用最广泛的一种循环控制...

3216
来自专栏五分钟学算法

十大经典排序算法动画,看我就够了!

Tip 为了演示更加清楚,本文中所有的动画都放慢了速度,因此GIF大小对比之前会有所增大,图片加载速度会变慢,如果你想获取所有的超清动画,在公众号回复 腾讯 可...

1054
来自专栏java一日一条

Java习惯用法总结

在Java编程中,有些知识 并不能仅通过语言规范或者标准API文档就能学到的。在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。(Joshua...

642
来自专栏王肖的UT

正则表达式~~检索匹配的利器

正则表达式(Regular Expression,下文简称为Regular或正则)是开发中一个不可多得的利器,它广泛应用于字符串的查找、匹配以及替换等场景。以...

6557
来自专栏程序员同行者

python 函数进阶

函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形式

1143
来自专栏编程

八大排序算法总结与java实现

概述 因为健忘,加上对各种排序算法理解不深刻,过段时间面对排序就蒙了。所以决定对我们常见的这几种排序算法进行统一总结。首先罗列一下常见的十大排序算法: ? 请点...

26710

扫码关注云+社区