java第三讲

第三章 类与对象

1、面向对象概述

面向过程(POP)与面向对象(OOP) 二者都是一种思想,面向对象是相对于面向过程而言的。

面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。5W里的How

面向对象,将功能封装进对象,强调的是具备了功能的对象,以类/对象为最小单位,考虑谁来 做,这个是5W里的WHO

面向对象更加强调 运用人类在日程的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚 合、多态等。

5W是who where when how why

概述

        面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的 面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之中进行了应用,后来根据面向对象 的设计思路,才形成C++,而由C++产生了Java这门面向对象的编程语言。

        但是在面向对象设计之前,广泛采用的是面向过程,面向过程只是针对于自己来解决问题。面向过程的 操作是以程序的基本功能实现为主,实现之后就完成了,也不考虑修改的可能性,面向对象,更多的是 要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用,增强可维护性,所以,面 向对象的开发更像是一个具备标准的开发模式。

在面向对象定义之中,也规定了一些基本的特征:

(1)封装:保护内部的操作不被破坏 ,将方法和属性封装在类中,类就是载体,调用方法或者属性时,只需先将该类实例化就行;

(2)继承:在原本的基础之上继续进行扩充,例如平行四边形在四边形的特点上加上自己新特性,其中四边形的特点被平行四边形使用就是继承;

(3)多态:在一个指定的范围之内进行概念的转换,父类对象应用于子类的特征就类似于多态。   第二节:类与对象

1.类与对象概述 类与对象是整个面向对象中最基础的组成单元。

类:是抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法);

对象:对象是一种个体的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性值来区 分不同对象,实实在在存在的。

可以一句话来总结出类和对象的区别:类是对象的模板,对象是类的实例化

类只有通过对象才可以使用,而在开发之中应该先产生类,之后再产生对象。

现在先这样记住:类不能直接使用,对象是可以直接使用的。

例如scanner类
使用格式
Scanner scan = new Scanner();
其中scan就是Scanner类的实例化对象

2、java中的成员

现实世界的生物体,大到鲸鱼,小到蚂蚁,都是由最基本的细胞构成的,同理,java代码世界是由诸多 个不同功能的类构成的。

常见的类的成员有:

属性:对应类中的成员变量。

Filed = 成员变量 = [域、字段]

行为:对应类中的成员方法。

Method = 方法 = 成员方法

构造方法

constructor

代码块

{

}

3、类的定义

权限修饰符 class 类名{
    属性
    方法
}
public class Person{
    String name;//姓名
    int age;//年龄
    double height;//身高
    boolean sex;//性别
}

4、对象的定义和使用

public class Student{
    int id;
    String name;
    int age;
    String address;
}
类 对象名 = new 类();
Scanner scan = new Scanner();

三、方法的定义和使用

1、什么是方法

方法是指一段可以直接被另一段程序引用(调用)的具有特定功能的程序。也叫做子程序、(OOP 中)方法。

2、方法的语法定义和调用

语法定义:

权限修饰符 [static] 返回值类型/void 方法名(参数列表){
       //执行业务逻辑 代码块
    return 变量/常量;
}
1、权限修饰符
    public protected 缺省/friendly private
如果不写权限修饰符就默认为缺省

2、返回值类型 有返回值的 VS 没有返回值
    有返回值的:在方法声明的时候,一定要指定对应的返回值类型。同时在方法体中,要加上return 对应
类型的常量、变量。
    没有返回值的:在方法声明的时候,写void。在方法体中,可以不写return。如有需要的话,有可以写
rentun。 return; 表示方法结束。

3、参数列表:数据类型 参数名1,数据类型 参数名2,数据类型 参数3
可以有0个、1个、2个...无数个。

调用:

对象名.属性名
对象名.方法名()

3、返回值、参数列表进行分类讲解方法

返回值类型:有返回值类型 没有返回值类型

        返回值类型:如果没有返回值,就是void 否则 根据具体的返回值的类型来写。

参数列表:有参数的 没有参数

a、没有返回值 没有参数列表

public void Person(){
    System.out.println(1);
}

b、没有返回值 有参数列表

调用时,需要传入参数

public void Person(int i){
    System.out.println(i);
}

c、有返回值 没有参数列表

调用时,需要接收返回值

public int  Person(){
    int num=1;
    return num+1;
}

d、有返回值 有参数列表

调用时,需要传入参数,并且接收返回值

public int  Person(int j){
    int num=1;
    return num+j;
}

 4、方法使用过程中的注意事项

1. 使用类中的方法或者属性之前,一定要先创建对象 先new。
2. 对象中的属性和方法的调用 对象名.方法名/属性名
3. 调用方法时传入方法的数据类型和顺序,都要跟定义方法时定义的参数数据类型和顺序完全一致。
4. 方法的返回值类型根据**自己的需求**,看是否有返回值,如果没有返回值,就写void,如果有返回值,
就写上与返回值数据类型相同的数据类型。
5. 参数列表中不能有同名参数。
6. 方法返回值的类型要大于等于 return 数据的类型;

四、构造方法

构造方法的的名字要与类名相同,构造方法可以重载

public class Constructor {
    String name = "张三";//若不赋值,则使用默认值张三
    int age = 18;
    int id = 1001;
    //构造方法 格式:权限修饰符 类名(){}
    //没有返回值 也没有void  new对象的时候调用
    //当系统没有自定义的构造方法时,会有一个默认的无参构造方法,
    //如果自定义构造方法后,系统提供的构造方法将会被覆盖
    public Constructor(){
        System.out.println("这是一个空参构造方法");
    }
    public Constructor(int age){
        this.age=age;//this 代表当前类,本类中调用自己的成员变量在this
        System.out.println("这是一个int参构造方法"+age);
    }
    public Constructor(String name, int age, int id){
        System.out.println("这是一个三参构造方法");
    }
}
public class Contstuctor1Test {
    public static void main(String[] args) {
        Constructor con=new Constructor();//调用空参构造方法
        Constructor con2=new Constructor(12);//调用单参构造方法
        Constructor con3=new Constructor("Martin",21,5934345);//调用三餐构造方法
    }
}

五、方法的重载

public class Overload {
    //方法重载能够减少方法的命名
    //在同一个类里,方法名相同,参数的个数  顺序   类型不同都能构成方法的重载
    //方法重载与返回值的类型无关
    String name="zs";
    public int add(int a,int b){
        System.out.println("这里是int int");
        return a+b;
    }//参数类型不同
    public double add(double a,int b){
        System.out.println("这里是double int");
        return a+b;
    }//参数个数不同
    public double add(double a,double b,int c){
        System.out.println("这里是double double int");
        return a+b+c;
    }//参数顺序不同
    public double add(int a,double b,double c){
        System.out.println("这里是int double double");
        return a+b+c;
    }
}
public class Overlaod1Test {
    public static void main(String[] args) {
        Overload ov1=new Overload();
        System.out.println(ov1.add(12,13));//调用的是int int 方法
        System.out.println(ov1.add(12.0,13));//调用的是double int 方法
        System.out.println(ov1.add(12.0,13.0,12));//调用的是double double int方法
        System.out.println(ov1.add(1,2.3,3.3));//调用的是 int double double方法
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值