• 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修饰的方法称为实例方法

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯VIP 算法训练 开心的金明
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯 算法训练 纪念品分组
    Java实现 蓝桥杯VIP 算法训练 校门外的树
    Java实现 蓝桥杯VIP 算法训练 统计单词个数
    Java实现 蓝桥杯VIP 算法训练 开心的金明
  • 原文地址:https://www.cnblogs.com/obge/p/12307552.html
Copyright © 2020-2023  润新知