初识面向对象

这篇博客介绍了Java面向对象编程的基础,包括类与实例的概念、构造方法、this关键字的使用,以及对象初始化的过程。通过实例展示了类的设计、构造方法的重载以及静态代码块的应用。同时还讲解了封装性的概念,通过设计Animal类和实现银行ATM功能的案例来阐述。
摘要由CSDN通过智能技术生成

面向对象编程之基础

思想:

一切皆对象,客观事物都是对象。对象具有特征(属性)和行为(方法)。
类:一类事物的抽象描述(共同的特征和行为),可以将类看成是同一类事物的模板。
对象:是类的具体化的实例,是由类创建的。

Java中如何声明类:

class 类名{
  类体
}

类体的组成:

属性:静态属性(类名.)、实例属性(类实例对象名.)
方法: 静态方法,实例方法、构造方法
代码块:静态代码块,实例代码块

1.1 初识类与实例

packageday06;
​
/**
* 创建学生类,具有学号、姓名、年龄特征和 学习 的方法
*/
classStudent {
    // 类的成员变量
    longsid;
    Stringname;
    intage;
​
    // 构造方法: 不能手动调用,是实例化时被动调用, 构造方法可以重载的
    Student(longsid, Stringname, intage){
        // 类的成员变量的名称 与 方法中的局部变量的名称 相同时,成员变量名前需要 加 this. 前辍
        this.sid=sid;
        this.name=name;
        this.age=age;
    }
​
    voidstudy(Stringcourse){
        // name 是类的成员变量
        System.out.printf("%s 正在学习 %s\n", name, course);
    }
}
​
publicclassOOB1 {
    publicstaticvoidmain(String[] args) {
        // 实例化2位学生
        Students1=newStudent(1001, "罗星", 20);
        Students2=newStudent(1002, "李星", 18);
​
        // 通过对象名(s1, s2)可以访问对象的属性和调用它的方法
        // 对象名.属性,   对象名.方法名(实参列表)
        System.out.println(s1.sid+","+s2.sid)
        s1.study("Java语法基础");
        s2.study("面向对象");
    }
}

1.2 类的组成

成员变量

静态成员变量

普通成员变量

构造方法:实例化时被动调用的,可以重载的

成员方法:实例对象调用的

代码块

静态代码块: 可以初始化静态成员变量

一般代码块: 可以访问静态成员,也可以访问普通成员变量

如:

packageday06;
​
classA {
    // 类的成员变量存在默认值吗? 存在默认值
    staticintpos; // 静态成员变量
    intdirect; // 普通成员变量
    Stringname; // 普通成变量,String属于引用类的类型,默认值为null
​
    {
        // 普通代码块, 可以初始化成员变量
        // new 实例化时,触发代码块中的语句
        pos+=200;
        direct=100;
    }
​
    static {
        // 静态代码块, 可以初始静态成员变量
        // 随着类加载执行,装载到方法区中(静态区)
        pos+=300;
        // direct = 1;
    }
    // 构造方法: 无返回值,方法名同类名
    A(Stringname){
        this.name=name;
    }
​
    // 实例方法
    voidshow(){
        System.out.println(pos+","+direct+","+name);
    }
​
    // 类的静态方法
    staticvoidshow2(){
        // 静态方法中可以调用实例方法吗?
        System.out.println(pos);
    }
}
​
publicclassOOB2 {
    publicstaticvoidmain(String[] args) {
        // 静态成员变量访问: 类名.变量名
        System.out.println(A.pos); // 300
​
        // 普通的成员变量访问: 类实例对象名.变量名
        // 创建类实例的语法:  类名 对象名 = new 类名(构造方法的参数列表);
        // 没有声明任何的构造方法时,Java编译器,自动提供一个无参的构造方法
        // 如果提供了构造方法,则Java编译器不会提供无参的构造方法
        Aa=newA("张三");
        // 修改实例的name和direct属性
        a.name="disen";
        // a.direct = 20;
        System.out.println(a.direct+","+a.name);  // 100, disen
​
        // 修改pos属性
//        A.pos = 22;
//        a.pos = 23;  // 静态成员是所有实例对象共享的
//        System.out.println(a.direct+"--->"+A.pos);
        System.out.println(A.pos); // 200, 300? 是 200,在实例化的过程中修改了pos静态成员变量
​
        Aa2=newA("李四");
        a2.show2();
    }
}

1.3 例题

定义学生类

属性

学号(sid)

姓名(name)

年龄(age)

性别(sex)

分数(score)

方法

打招呼(sayHi) //打印学生所有信息

加分 (addScore) // 加分

成绩等级(scoreLevel) //返回学生的成绩级别

>=90 A

>= 80 B

>= 60 C

<60 D

packageday06;
classStudent{
    intsid;
    Stringname;
    intage;
    Stringsex;
    doublescore;
​
    Student(intsid, Stringname, intage, Stringsex){
        this.sid=sid;
        this.name=name;
        this.age=age;
        this.sex=sex;
    }
​
    voidsayHi(){
        System.out.printf("(%d, %s, %d, %s, %.2f)\n", sid, name, age,sex, score);
    }
​
    booleanaddScore(doublescore){
        if(score>0&&score<=100){
            this.score+=score;
            returntrue;
        }
        returnfalse;
    }
​
    StringscoreLevel(){
        if(score>=90) return"A";
        elseif(score>=80) return"B";
        elseif(score>=60) return"C";
        elsereturn"D";
    }
}
publicclassOOB3 {
    publicstaticvoidmain(String[] args) {
        //创建多个学生对象,为其各个属性赋值,并调用方法
        Students1=newStudent(1,"disen",20,"男");
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值