Java 基础 ------- 面向对象(一)

Posted 随风而逝.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 基础 ------- 面向对象(一)的主要内容,如果未能解决你的问题,请参考以下文章

Java基础之OOP

Java基础学习笔记04

java基础面试题整理1-面向对象

JAVA基础——面向对象三大特性:封装继承多态

1-Java基础回顾整理_07_面向对象

java面向对象基础复习