zoukankan      html  css  js  c++  java
  • Java 基础 ------- 面向对象(一)

    面向对象的三大特征:封装、继承和多态

    1、类与对象

    对象:描述客观事物的一个实体

    类:具有相同属性和方法的一组对象的集合.

    对象拥有类的属性和方法,是类的一个实例,就像模具与模具制作的物品之间的关系。

    类图的画法: 

    1.1、类的定义:

    访问修饰符 class 类名{
    
    }

    Java 类名的命名规则:
      类名应该以下划线(_)或字母开头,最好以字母开头。
      第一个字母大写,如果类名由多个单词组成,则每个单词的首字母最好都大写。
      类名不能为 Java 中的关键字,例如 boolean、this、int 等。
      类名不能包含任何嵌入的空格或点号以及除了下划线(_)和美元符号($)字符之外的特殊字符。

    访问修饰符: public,protected,friendly(或default),private

    1. private
    用 private 修饰的类成员,只能被该类自身的方法访问和修改,而不能被任何其他类(包括该类的子类)访问和引用。因此,private 修饰符具有最高的保护级别。例如,设 PhoneCard 是电话卡类,电话卡都有密码,因此该类有一个密码域,可以把该类的密码域声明为私有成员。
    2. friendly(默认)
    如果一个类没有访问控制符,说明它具有默认的访问控制特性。这种默认的访问控制权规定,该类只能被同一个包中的类访问和引用,而不能被其他包中的类使用,即使其他包中有该类的子类。这种访问特性又称为包访问性(package private)。
    同样,类内的成员如果没有访问控制符,也说明它们具有包访问性,或称为友元(friend)。定义在同一个文件夹中的所有类属于一个包,所以前面的程序要把用户自定义的类放在同一个文件夹中(Java 项目默认的包),以便不加修饰符也能运行。
    3. protected
    用保护访问控制符 protected 修饰的类成员可以被三种类所访问:该类自身、与它在同一个包中的其他类以及在其他包中的该类的子类。使用 protected 修饰符的主要作用,是允许其他包中它的子类来访问父类的特定属性和方法,否则可以使用默认访问控制符。
    4. public
    当一个类被声明为 public 时,它就具有了被其他包中的类访问的可能性,只要包中的其他类在程序中使用 import 语句引入 public 类,就可以访问和引用这个类。
    类中被设定为 public 的方法是这个类对外的接口部分,避免了程序的其他部分直接去操作类内的数据,实际就是数据封装思想的体现。每个 Java 程序的主类都必须是 public 类,也是基于相同的原因。

    1.2属性:对象拥有的特征

    访问修饰符 数据类型 属性名;

    属性名:一般是满足小驼峰命名,也就是第一个单词子母小写,后面单词的第一个首字符均大写

    数据类型:主要分为基本数据类型和引用数据类型,也就是八大基本数据类型和引用数据类型中的类,数组和接口;

                  常用的:   boolean, byte,short,int,long,char,float,double  和String

    初始化的默认值如下:
      整数型(byte、short、int 和 long)的基本类型变量的默认值为 0。
      单精度浮点型(float)的基本类型变量的默认值为 0.0f。
      双精度浮点型(double)的基本类型变量的默认值为 0.0d。
      字符型(char)的基本类型变量的默认值为 “u0000”。
      布尔型的基本类型变量的默认值为 false。
      数组引用类型的变量的默认值为 null。如果创建了数组变量的实例,但没有显式地为每个元素赋值,则数组中的元素初始化值采用数组数据类型对应的默认值。

    注意:成员变量可以不用赋值,局部变量必须要赋值

      public、protected、private:用于表示成员变量的访问权限。
      static:表示该成员变量为类变量,也称为静态变量。
      final:表示将该成员变量声明为常量,其值无法更改。

    1.3方法

    方法:对象执行操作的行为

    可以分为有返回值得方法和无返回值得方法,有无返回值中又分为有无参数,

    大概四个类型:

    无返回值无参数的方法:

    访问修饰符 void 方法名 () {
    ...
    }

    无返回值有参数的方法:

    访问修饰符 void 方法名 (参数类型 参数名1,参数类型 参数名2......) {
    ...
    }

    有返回值无参数的方法:

    访问修饰符 返回类型  方法名 () {
       ... 
        return 返回具体数据;
    }

    有返回值有参数的方法:

    方法名:一般是满足小驼峰命名,也就是第一个单词子母小写,后面单词的第一个首字符均大写

    return : 返回具体数据并退出该方法;

    构造方法:主要分为默认构造方法和带参构造

    作用:进行数据的初始化

    //默认构造方法
    访问修饰符  与类名相同的方法名 (){
    
            //......  
    }
    
    
    //带参构造方法
    访问修饰符  与类名相同的方法名 (参数列表){
    
            //......  
    }


    特点:方法名与类名相同,没有返回值,如果没有创建java 会自动添加默认构造方法。

    1.4创建对象

    类名  对象名   =  new  类名();

    例子:
    Dog erha = new Dog(); 解释:
    new 关键字 左边的类名 为 对象的数据类型 右边的类名() 为 类的构造方法

    引用对象的属性和方法

    //引用对象的属性
    对象名.属性名
    
    //引用对象的方法
    对象名.方法名

    1.5、包 

    有啥意义:包机制也是封装的一种形式

    作用:

    1、允许将类组合成较小的单元(类似文件夹),易于找到和使用相应的类文件。

    2、防止命名冲突:在不同的包中可以定义相同的类名

    3、允许在更广的范围内保护类、数据和方法,

    定义:   Package (包的关键字)

     命名:全部小写字母,使用  .  分割,

       第一个前缀通常为小写的ASCII 字母,并且是一个顶级域名(一般为com,edu,net,gov,org),通常为组织网络域名的逆序,如:域名为baidu.com,包可定位com.baidu.obge

       后续部分依不同的机构各自内部的规范不同而不同,一般为  com.项目名.哪一层  

    关于声明包和导入包:

      声明包的含义:是声明当前类所在的包,

      导入包的含义:是声明在当前类中要使用到的其他类所在的包

    1.6.this 关键字对一个对象的默认引用

    用途:相当于表示这个类的类名

    1、使用this调用成员变量,解决成员变量和局部变量同名冲突

     不同名可以不用

    2、使用this调用成员方法

    3、使用this 调用重载的构造方法,只能在构造方法中使用,且必须是构造方法的第一条语句。

        public Dog(String gender,int age) {
            this.gender =gender;
            this.age = age;
            
        }
        public Dog(String name) {
         // 调用重载方法,放在第一条,调用此构造方法的时候同时给上一条赋值
            this("男",11);         
            this.name = name;
        }

    this 是在对象内部指代自身的引用,所以this只能调用实例变量、实例方法和构造方法,不能调用类的变量和类方法,也不能调用局部变量。

    1.7.static 关键字

    为了满足 多个对象中的某些相同数据共用,使用static 修饰,可以直接通过类名.静态方法名进行调用

    1、修饰方法

    通过有无使用static 修饰方法分为静态方法和实例方法

    使用:

        //实例方法
        public void showPrint1(String name) {
            System.out.println("输入打印:"+name);
        }
        //静态方法
        public static void showPrint2(String name) {
            System.out.println("输入打印:"+name);
        }
        

    调用:

        
            //调用静态方法      类名。方法名
            Dog.showPrint2("小红");
            
            Dog dog = new Dog();
            //调用实例方法     对象名。方法名
            dog.showPrint1("小明");        

    注意:

      静态方法中不能直接访问实例变量和实例方法

      实例方法中可以直接调用类中定义的静态变量和静态方法

    2、修饰变量

    通过有无使用static 修饰变量分为静态变量和实例变量 

    package com.obge.obj;
    
    public class Yuan {
        //静态变量
        public static String shape;   //形状
        //使用  final 不可以修改,常量名必须全部由大写字母组成,一定要赋值
        public static final double PI = 3.14;
        
        //实例变量
        public double radii;  //半径        
        
    }

    !!!重点注意:

    a.方法重载:

    定义:在同一个类中,方法名相同,参数的个数或类型不同,方法的返回值不能作为判断方法之间是否构成重载的依据

    优点: 对原有的方法的一种升级,可以根据参数的不同,采用不同的实现方法,不需要编写多个名称简化了代码,也就是原来的方法只能做一件事,使用了方法重载后就可以通过传参数来做更多的事。   

    b.成员变量与局部变量

    定义:

      成员变量:直接在类中定义的变量,定义在方法的外部,

      局部变量:在方法中定义的变量,

    区别:

      

     c.形参与实参:

      创建方法时定义的参数表示形参

      调用方法时定义的参数表示实参

    d.构造方法重载

     在同一个类中定义多个重载的构造方法,也就是好多个与类名相同的方法名,但是传递的参数类型和个数不同。

    e.静态变量和实例变量

      使用       static修饰的属性称为静态变量或类变量

      没有使用  static 修饰的属性称为实例变量。

    f.静态方法和实例方法

      使用        static 修饰的方法称为静态方法或类方法

      没有使用static修饰的方法称为实例方法

  • 相关阅读:
    svn 回退/更新/取消至某个版本命令详解
    SVN版本回退
    用Visual Studio编辑Linux代码
    vim——打开多个文件、同时显示多个文件、在文件之间切换
    vim下的ctags和taglist等的使用和配置
    Uber优步北京第二、三组奖励政策
    Uber优步北京第一组奖励政策
    uber在限制新司机加入了,看看新政策把
    软件架构 "4+1" 视图模型
    软件体系结构经典问题——KWIC的分析和解决
  • 原文地址:https://www.cnblogs.com/obge/p/12307552.html
Copyright © 2011-2022 走看看