Java学习,面向对象基础

四、面向对象:


类=抽象概念的人;例如人、猫、狗
对象=实实在在的某个人;
属性:姓名、性别、年纪、出生年月;
方法(行为):吃饭,睡觉....;
面向对象的重点是类的设计;
类的设计就是类的成员的设计;

1、类,类的设计就是类的成员的设计;
field = 属性 = 成员变量,Method =(成员)方法 = 函数
一个类中包含有:属性、方法(行为)、构造器、代码块、内部块(可无)

class person{           //定义了一个person的类,人的类
    
    //属性
    string name;
    int age;
    boolean isMale;

    //方法
    public void sleep(){
        system.out.println("人可以睡觉");
    }
    
    public void eat(){
        system.out.println("人可以吃饭");
    }
    
    public void talk(string language){
        system.out.println("人可以说话,使用的是"+language);
    }
}

类的实例化,即创建类的对象;
创建类的对象 = 类的实例化 = 实例化类
创建person对象的测试(test)

public class persontest(){
    public static void main(String[] args){
        //创建Person类的对象
        person p1 = new person();

        //调用对象的结构,属性,方法
        //调用属性:"对象.属性”
        p1.name="桂桂";
        p1.isMale = true;
        system.out.println(p1.name);

        //调用方法,“对象.方法
        p1.eat();
        p1.sleep();
        p1.talk("chinese");
        
        preson p2 = new person();
        system.out.println(p2.name);//未赋值,默认初始化未null
        system.out.println(p2.isMale);//为赋值,默认初始化未false

        //p1变量保存的对象地址赋给p3,导致p1和p3指向堆空间中的同一对象实体。
        person p3 = p1;
        System.out.println(p3.name);//桂桂

        p3.age = 10;
        System.out.println(p1.age);//10 


        
//如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性。(非statuc的)
//意味着,如果修改一个对象的属性A,则不影响另外一个对象属性A的值。


    }
}
面向对象的使用(面向对象的落地的实现);
1、创建类,设计类的成员
2、创建类的对象
3、通过 ”对象.属性“ 或 ”对象.方法“ 调用对象的结构
p180 00:53 2023/5/6

四14:44 2023/5/614:44 2023/5/6对象的内存解析

内存中有堆空间、栈空间。

局部变量存在堆空间中,
栈中有,对象的首地址值
p3=p1时,栈中新建一个p3,并指向p1所指的地址值。

五,类的设计
(1)类中属性的使用
属性(成员变量)vs 局部变量
1.相同点
    1.1定义变量的格式:数据类型 变量名 = 变量值
    1.2先声明,后使用
    1.3变量都有其对应的作用域


2.不同点
    2.1在类中声明的位置不同
    属性,直接定义在类的一对{}内
    局部变量,声明在方法内,方法形参(方法小括号里)、代码块、构造器内部的变量

    2.2关于权限修饰符的不同
    属性:可以在声明属性时,指明其权限,使用权限修辞符。
    常用的的权限修辞符:private、public、缺省(没写)、protected --->封装性
    目前,声明属性时,都使用缺省就可以了
    局部变量:不可以使用权限修饰符,
    
    2.3默认初始化值的情况
    属性:类的属性,根据其类型,都有默认的初始化值。
    整型(byte、收人头、int、long):0
    浮点型(float\double):0.0
    字符型(char):0(或'\u0000')
    布尔型:(boolean),false

    引用数据类型(类、数组、接口):null

    局部变量:没有默认初始化值。
    意味着,我们在调用局部变量之前,一定要显式赋值。
    特别的:形参在调用时赋值即可。

    在内存中加载的位置:
    属性;加载到到堆空间中(非static)
    局部变量:加载到栈空间


 

public class usertest{
    public static void main(String[] args){
        user p1 = new user();
        System.out.println(p1.name);
    
}
class user{
    //属性(成员变量)                                                                                                                           
    private String name;
    public int age;
    boolean isMale;


}

(2)、类中的方法声明和使用
方法:描述类应该具有的功能。
比如:math类:事情让他()\random()...

(3)、方法体的声明形式:
权限修饰符 返回值数据类型 方法名(传入形参列表){
    。。。
    方法体
    。。。20:24 2023/5/6
}
例:public void eat(){};--->void表示没有返回值
public void sleep(int hour){};--->void表示没有返回值
public String getName(){};--->返回两个字符串
public String getNation(String nation){};--->返回两个字符串

方法中经常出现:static<---特殊的关键字

(4)、说明
    4.1:关于权限修饰符:
        Java规定的4种权限修饰符:private、public、缺省、protected。(前两个频率高)--->封装再细说
    4.2返回值类型:有返回值 VS 无返回值 
            4.2.1如果方法有返回值,则必须在方法声明时,指定返回值类型。

public class Customertest{

}

class Customertest{

    //属性
    String name;
    int age;
    boolean isMale;

    //方法
    public void eat(){
        System.out.println("客户吃饭");
    }
    
    public void sleep(int hour){
        System.out.println("休息了"+ hour +"个小时");
    }
    
    public String getName(){
        return name;
    }

    public String getNation(String nation){
        String info = "我的国籍是:" + nation;
        return info;
    }

}


(3)、方法体的声明形式:
权限修饰符 返回值数据类型 方法名(传入形参列表){
    。。。
    方法体
    。。。20:24 2023/5/6
}
例:public void eat(){};--->void表示没有返回值
public void sleep(int hour){};--->void表示没有返回值
public String getName(){};--->返回两个字符串
public String getNation(String nation){};--->返回两个字符串

方法中经常出现:static<---特殊的关键字

(4)、说明
    4.1:关于权限修饰符:
        Java规定的4种权限修饰符:private、public、缺省、protected (前两个频率高)--->封装性说
    4.2返回值类型:有返回值 VS 无返回值 
        4.2.1如果方法有返回值,则必须在方法声明时,指定返回值类型。同时,方法中,需要使用
             return关键字来返回指定类型的变量或常量,例:return 变量(常量);
            如果方法中没有返回值,则方法声明时,使用void来表示。通常,没有返回值的方法中,就不使用return,但如果使用,只能用“return;”表示结束此方法的意思。
            return;后边不能声明表达式;
        4.2.2我们定义的方法该不该有返回值
            (1)看题目要求;
            (2)经验 
        4.3方法名:属于标识符,遵循标识符规则和规范,“见名知意”
        4.4形参列表:方法可以声明0个、1个、或多个形参。
            4.4.1型1 形参1,数据类型2 形参2,····
        4.5:方法体:方法体功能的体现;    

    5.return关键字的使用:
        1、使用的范围,使用在方法中;
        2、作用:1结束一个方法;2针对有个返回值的方法,使用”return 数据“方法返回所要的数据。
        3、注意点:return关键字后面不可以声明执行语句

    6.方法的使用中,可以调用当前类的属性或方法
        特殊的:方法A中又调用方法A:递归方法。
    方法中,不可以定义方法


P192 对象数组题

定义类student,包含学号number(int),班级state(int),成绩score(int).
创建20个学生对象,学号为1到20,年级和班级都由随机数确定。
问题一,打印出3年级(state值为3)的学生信息。
问题二,使用冒泡排序按学生成绩排序,并遍历所有学生信息

提示:
    1)生成随机数:Math.random(),返回值类型double;
    2)四舍五入取整:Math.round(double d),返回值类型long.
 

public class studentTest {
    public static void main(String[] args){

    //声明一个student数组
    student[] stus = new student[20];
    
    for(int i = 0;i <stus.length;i++){
        //给数组元素赋值
        stus[i] = new student();
        //给Student对象的属性赋值
        stus[i].number = i + 1;
        
        //给Student对象年纪赋[1,6]
        stus[i].state = (int)(Math.random()*(6-1+1)+1);


}


}

class Student{
    int number;//学号
    int state;//年级
    int score;//成绩


}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值