Java面向对象(上)

一、面向对象概念

1、什么是对象

现实世界中的对象:手机、车。

对象拥有属性和功能(function、method)。

2、程序中的对象

如何在程序中表示现实世界中的对象?

现实中的对象多数来自于“模板”,程序中的对象也应该具有“模板”。

3、类

1.什么是类?

2.类的抽取

3.创建类

1.类的由来:

类是由多个具有相同特征和行为的对象抽取出来的

2.如何定义一个类:

1、确定类名

2、编写属性(实例变量)

3、编写方法(实例方法)

属性:通过变量表示,又称实例变量。

4、创建对象

语法:类名 对象名 = new 类名();

Student stu = new Student();

例:

package com.qf.oop;

public class TestStudent {
    public static void main(String[] args) {
        //创建Student对象
        Student stu = new Student();
        //使用对象(1、给对象属性赋值和取值  2、调用对象的方法)
        //给对象属性赋值
        stu.name = "张三";
        stu.age = 20;
        stu.sex = "男";
        stu.score = 100;

        //对象属性取值
        System.out.println(stu.name);
        System.out.println(stu.age);
        System.out.println(stu.sex);
        System.out.println(stu.score);
        //调用对象的方法
        stu.study();
        stu.sleep();    
    }
}

5、类和对象的关系

类:定义了对象应具有的属性和方法,类是对象的模板

对象:对象是类的实例,同一个类是可以创建出多个对象的

6、实例变量

实例变量和局部变量的区别

特殊情况:局部变量可以与实例变量重名

如果成员变量和局部变量的名称相同的时候,java中遵循就近原则

7、实例方法

1.概念:

不使用static修饰的方法

public void sleep() {
    System.out.println("正常人睡觉,8小时");
}
 

2.方法的重载

方法重载:在一个类中的出现同名方法称之为方法的重载

方法重载的要求:

1、同名不同参(参数类型、个数、顺序)

2、与返回值,访问修饰符无关

调用重载的方法会根据传递的参数不同,去执行不同的方法

重载的好处:方便、灵活、屏蔽使用差异

public void sleep() {
    System.out.println("正常人睡觉,8小时");
}

public void sleep(int hour) {
    System.out.println("其他人睡觉,"+hour+"小时");
}

3.重载的方式

package com.qf.oop;

public class Student {
    //属性(变量)    成员属性(变量)
    String name;
    int age;
    boolean sex;
    double score;

    //方法        成员方法
    public void study() {
//        String name = "abc";
        System.out.println(name+"学习");
        score = score+1;
    }

    // 只有返回值不一样,不可以
//    public int study() {
       String name = "abc";
//        System.out.println(name+"学习");
//        score = score+1;
//        return (int) score;
//    }

    /**
     * 方法的重载
     * 在同一个类中,方法的名字相同,但是参数不同
     * @param hours
     */
    public void study(int hours){
        System.out.println(name+"学习");
        score = score+hours;
    }

    /**
     * 方法的重载
     * 参数的个数一样,但是参数的类型不同
     * @param hours
     */
    public void study(double hours){
        System.out.println(name+"学习");
        score = score+hours;
    }

    /**
     * 方法重载
     * 参数个数不一样
     * @param hours
     * @param groupnum
     */
    public void study(double hours,int groupnum){
        System.out.println(name+"学习");
        score = score+hours+groupnum;
    }

    /**
     * 参数的个数相同,
     * 但是方法参数的类型的顺序不一样,也可以重载
     * @param groupnum
     * @param hours
     */
    public void study(int groupnum,double hours){
        System.out.println(name+"学习");
        score = score+hours+groupnum;
    }


    public void sleep() {
        int a = 100;
        // 在定义局部变量时,可以使用与实例变量相同的名字
//        String name = "abc";
        System.out.println(name+"睡觉"+a);

    }

    public void play(){
        System.out.println(name+"play");
        score = score -2;
    }
}

二、构造方法

1、构造方法

类中的特殊方法,用于创建类的对象

  • 作用:创建类的对象(实例化)
  • 语法:
  • // 无参构造
    public 构造方法名(){}

    // 有参构造
    public 构造方法名(类型 参数1,类型 参数2){}

2、对象创建过程

1.对象的创建过程:

  • 内存中开辟对象空间
  • 为各个属性赋予初始值
  • 执行构造方法中的代码
  • [将对象的地址赋值给变量]

3、对象的内存分配

存储对象的变量p(引用)中保存对象的地址,通过变量中的地址访问对象的属性和方法。

4、构造方法为属性赋值

 

  • 创建对象的同时,将值传入构造方法
  • 由构造方法为各个属性赋值

 

5、造方法重载

构造方法也可重载,遵循重载规则。

6、this关键字

this关键字:
含义:表示当前类的对象,在对象被创建的时候自动产生
作用: 可以调用本类的属性、方法、构造方法

  • 调用本类的属性
  • 调用本类的方法:

 

package com.qf.oop;

/**
 * 注意:
 * 如果我们给一个类中添加了自定义的构造方法,那么
 * 编译器原来会自动添加的 无参构造,就没有了
 * 如果还需要无参构造方法,只能自己手动在类中添加
 */
public class Dog {
    public Dog() {
    }

    public Dog(int age) {
        this.age = age;
    }

    int age;

    String name;

    public void live(){
        this.eat();
        this.eat();
        this.sleep();
    }

    public void eat(){
        System.out.println("dog eat");
    }

    public void sleep(){
        System.out.println("dog sleep");
    }
}调用本类的构造方法(只能在构造方法中使用)

在构造方法中使用this,表示成员变量

public class Person {
    String name;
    int age;

    public Person() {}

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值