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

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

1、类和对象

:抽象不具体的事物,通常表示一类事物的类别,在程序中表示模板

对象:具体的,真实存在的,可以看到的

1.1 如何创建类

类中放所有对象共有的数据/属性--------变量

类中放所有对象共有的行为/方法--------方法

class Person{//人类的模板
    //所有对象共有数据/属性
    int age;//年龄
    String name;//姓名
    char sex;//性别
    //所有对象共有的行为
    void eat(){ //吃的行为
        
    }
    void sleep(){//睡觉
        
    }
    void play(){//玩耍
        
    }
}
-----------------------------------------------
class  car{//车类的模板
    //共有数据
    String color;//颜色
    String type;//型号
    double price;//价格
    
    //共有的行为
    void run(){//前进的行为
     }
    void back(){//后退的行为
        
    }
    void stop(){ //刹车的行为
        
    }
}
-------------------------------------------------
class ObserverSubmarine{//侦察潜艇类
    //所有侦察潜艇对象共有的数据
    int x;
    int y;
    int width;//宽
    int height;//高
    int speed;//速度
    //共有的行为
    void step(){ //移动的行为
        
     }
}    

 变量分为两种:

成员变量:声明在类的里面,方法外的变量叫做成员变量,作用域在整个类中

局部变量:声明在方法里面的变量,都叫做局部变量,作用域在当前方法中

package oo.day01;
​
/**
 * 学生类模板:  代表所有学生对象
 * 类中放所有学生对象共有的属性(变量)和行为(方法)
 * 模板中不要放main 功能
 */
public class Student {
    //共有的属性   成员变量作用域在整个类体中
    String name;//姓名
    int age;//年龄
    int stuID;//学号
​
    //共有的行为
    void study() {//学习的行为
        //int a = 0;方法声明的变量为局部变量 作用域只在当前方法中可见
        System.out.println(name + "在刻苦学习...");
    }
​
    void sayHi() {
        System.out.println("大家好,我叫" + name + ",今年" + age + "岁了,我的学号是:" + stuID);
    }
}

自定义的类也是一种数据类型 

 1.2 如何创建对象

数据类型  变量名    创建一个学生对象
Student  stu   = new Student();  //创建了一个学生对象 将对象放到stu这个变量里面
​
Student  zs    = new Student();  //创建了一个学生对象 将对象放到zs这个变量里面
​
Student  ls    = new Student();  //创建了一个学生对象 将对象放到ls这个变量里面
​

1.3 如何访问对象

① 对象可以打点调出什么内容,取决一对象的模板中有什么。

② 那个对象 打点 调用属性 并赋值 那么就是那个对象的数据进行赋值。

③ 那个对象 打点 调用 方法 那么调用的方法里面用到的数据都是那个对象的 。

package oo.day01;
/**
 *  学生模板的测试类:
 *                  用于创建学生类对象
 * */
public class StudentDemo {
​
    public static void main(String[] args) {
        //创建对象的语法
        Student zs = new Student();//创建一个学生对象 存到了 zs变量里面.  拿zs就相当于用这个具体对象!
        //zs 这个变量 能打点调用 出什么 取决去当前 对象的模板!
        //哪个对象  打点 调用 属性 并赋值 那么就是给那个对象存到数据
        //访问对象的语法
        zs.name = "张三"; //为zs这个对象的姓名赋值 为"张三"
        zs.age = 30; //为zs这个对象的年龄赋值 为30
        zs.stuID = 1001;//为zs这个对象的学号赋值 为1001
        //哪个对象  打点 调用 方法  那么调用的方法里面用到数据都是那个对象的!
        zs.study();//调用zs这个对象 的学习行为
        zs.sayHi();//调用zs这个对象 的问好行为
        //------------------------------------------
        Student  ls = new Student();//创建一个学生对象 赋值给 ls这个变量
        ls.name = "李四";
        ls.age  = 40;
        ls.stuID = 1002;
        ls.study();
        ls.sayHi();
​
    }
}

 1.4 构造方法

 构造方法又称为构造器

适用性:在创建对象时,可以快熟的实现当前对象的属性赋值(初始化赋值)。

构造方法的语法:类名(){} (注意返回值那一说,加镂空就报错)

作用:构造方法分本质作用就是写构造方法,系统会自动送一个无参数的构造方法。

Java规定:如果不给类模板写构造方法,系统会自动送一个无参的构造方法。

特性:当前类模板,若被创建对象时,系统则会自动调用相对应的构造方法。

构造方法也可以重载:只需要满足构造方法名相同,参数个数或参数类型不同即可。

⑤ 如果在一个类中写了构造方法,系统则不会再赠送默认的构造方法(无参数的构造方法)

package oo.day01;
​
/**
 * 学生类模板:  代表所有学生对象
 * 类中放所有学生对象共有的属性(变量)和行为(方法)
 * 模板中不要放main 功能
 */
public class Student {
    //共有的属性   成员变量作用域在整个类体中
    String name;//姓名
    int age;//年龄
    int stuID;//学号
    //有参数的构造方法
    Student(String name1,int age1,int stuID1) { //构造方法再类被创建对象时执行
        name = name1;
        age = age1;
        stuID = stuID1;
    }
​
    //构造方法语法: 类名(){}
    //无参数的构造方法
    Student(){
​
    }
​
    //共有的行为
    void study() {//学习的行为
        int a = 0;//方法声明的变量为局部变量 作用域只在当前方法中可见
        System.out.println(name + "在刻苦学习..."); //隐式写法:this.name  代表当前对象的name
    }
​
    void sayHi() {
​
        System.out.println("大家好,我叫" + name + ",今年" + age + "岁了,我的学号是:" + stuID);
​
    }
}
​

 1.5 this关键字

this代指的当前对象,使用this关键字可以区分成员变量局部变量

哪个对选打点调用方法,那么this指代的就是这个对象

Java规定:局部变量可以于成员变量名字一样。在使用变量时,遵循就近原则

解决:可以用this关键字 明确表示 成员变量 避免于布局变量冲突的问题

main{
    Student zs = new Student();
    Student ls = new Student();
    Stud
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值