糖逗 发表于 2020-8-17 16:17:34

JAVA学习Day7【面对对象1】

本帖最后由 糖逗 于 2020-8-17 16:26 编辑

学习视频:https://www.bilibili.com/video/BV17J411G72L?p=20

125-142

/*
*面向对象思想JAVA语言 程序的最小单位是类
*把复杂的业务逻辑/功能中先抽取出“类”,然后再考虑这个类中包含什么属性和方法
*面向对象是把数据和功能(行为)合起来的。关注怎么做
*面向过程思想 C语言 程序的最小单位是函数
*把大的功能分解成一个一个小的功能
*面向过程是把数据与功能是分开的。关注谁做
*/



/*
*类:一类具有相同特征的事务的抽象描述
*类和对象的关系:类是众多对象的抽象描述,类是对象的设计图,创建对象的模板
*对象是类的个体,具体的实例
*/


/*
*类的提取:名词提取,转换成现实世界中的事物的类别
*类的设计:类的成员设计 1.属性(数据特征)2.方法:行为特征,功能特征
*3.构造器:创建对象时用 4.代码块:在类的初始化和对象初始化时用
*5.内部类:在某个大的事物中,包含了一个独立的小的事物的类别,而且一般这个小的事物类别只为大的事物服务时
*/


class Body{
        //属性
        double weight;
        char gender;
        //方法
        void eat(){
                System.out.println("吃饭");
        }
        void sleep(){
                System.out.println("睡觉");
        }
        //构造器
        Body(){

        }
        Body(double weight, char gender){
                this.weight = weight;
                this.gender = gender;
        }
        //代码块
        {
                System.out.println("非静态代码块");
        }
        static{
                System.out.println("静态代码块");
        }
        //内部类
        class Heart{
                public void beat(){
                        System.out.println("砰砰跳");
                }
        }

}

/*
*1.类的声明:
*【修饰符】 class 类名{
*       
*}
*如果一个类是public,那么源文件名必须与类名相同!!!!!
*2.类的第一类成员:属性
*(1)属性的声明 【修饰符】 数据类型 属性名;
* (2)类名每个单词的首字母大写(命名规则)
*(3)对象名/变量名:从第二个单词开始首字母大写
*/
//声明类
public class java07{
        public static void main(String[] args){
                //创建对象
                Person p = new Person();
                //为p对象的属性赋值
                p.name = "张三";
                p.age = 23;
                p.gender = '男';
                //访问某个对象的属性
                System.out.println(p.gender);

        }
}
//声明类
class Person{
        //属性列表
        String name;
        int age;
        char gender;

}


/*
*属性的特点:
*1.有默认值,原则和数组元素的默认值一样
*(1)基本数据类型:
*byte short int long : 0
*float double : 0.0
*boolean : false
*char : \u0000
*(2)引用数据类型:null
*例如:String等
*2.每一个对象的属性值是独立的
*/
class test07_01{
        public static void main(String[] args){
                //创建一个动物的对象
                Animal al = new Animal();
                //

        }
}

class Animal{
        String name;
        int legs;
}


/*
*类的成员之二:方法
*方法(method)又称为函数(function)
*方法是代表一个独立的可复用的功能
*声明方法的好处:
*(1)代码的复用
*(2)简化代码量
*1.声明一个方法
*【修饰符】 返回值的类型 方法名(形参列表){
*        方法体:实现代码的功能
*}
*2.调用方法
*3.命名规范:和变量名一样,胸第二个单词开始首字母大写
*/

class test07_02{
        public static void main(String[] args){
                printRectangle();

        }
        //public static 是修饰符
        //void 是返回类型,它是一种特殊的返回值类型,表示无返回
        public static void printRectangle(){
                for(int i = 1; i <= 5; i ++){
                        for(int j = 1; j <= 10; j++){
                                System.out.print("*" + " ");
                        }
                        System.out.println();
                }
        }
}


/*
*无参无返回值的方法
*调用:(1)在本类中,同一个级别,直接调用
*(2)在其他类中,需要通过对象名.方法来调用
*/

class test07_03{
        public static void main(String[] args){
                //创建对象
                Student s1 = new Student();
                s1.name = "小红";
                s1.age = 21;
                s1.score = 98;
                //通过对象去调用方法
                s1.printInfo();

        }
}
class Student{
        //属性
        String name;
        int age;
        int score;
        //方法
        void printInfo(){
                System.out.println("姓名" + name + "年龄" + age);
        }
}


/*
*无参有返回值的方法
*
*/

class test07_04{
        public static void main(String[] args){
                Account a1 = new Account();
                a1.balance = 10000;
                a1.printInfo();
                double d = a1.getMonthlyRate();
                System.out.println(d);

        }
}

class Account{
        String id;
        double balance;
        double rate = 0.035;

        void printInfo(){
                System.out.println("账户" + id);
        }

        double getMonthlyRate(){
                return rate / 12;
        }
}


/*
*有参无返回值的方法
*形参列表:声明时()中
*实参列表:调用时()中
*/
class test07_05{
        public static void main(String[] args){
                GrahicTools tools = new GrahicTools();
                tools.printRectangle();
                tools.printRectangleN(4, 5);

        }
}

class GrahicTools{
        void printRectangle(){
                for(int i = 1; i <= 5; i ++){
                        for(int j = 1; j <= 10; j++){
                                System.out.print("*" + " ");
                        }
                        System.out.println();
                }
        }
        void printRectangleN(int n, int m){
                for(int i = 1; i <= n; i ++){
                        for(int j = 1; j <= m; j++){
                                System.out.print("*" + " ");
                        }
                        System.out.println();
                }
        }
}


/*
*有参有返回值的方法
*/
class test07_06{
        public static void main(String[] args){
                MyMathTools tools = new MyMathTools();

                int m = tools.max(4, 6);
                System.out.println(m);

                int n = tools.threeMax(5, 3, 2);
                System.out.println(n);
        }
}

class MyMathTools{
        int max(int a, int b){
                return a > b ? a : b;
        }
        int threeMax(int a, int b, int c){
                return max(max(a, b), c);
        }
}

白砂糖 发表于 2021-4-1 19:35:30

很不错,帮我巩固了知识点,谢谢

25起步,35结束 发表于 2021-4-2 09:22:32

好帖子,刚学面向对象有些头疼

糖逗 发表于 2021-4-2 12:31:57

25起步,35结束 发表于 2021-4-2 09:22
好帖子,刚学面向对象有些头疼

看B站上尚硅谷的JAVA课程很不错。

25起步,35结束 发表于 2021-4-2 14:57:54

糖逗 发表于 2021-4-2 12:31
看B站上尚硅谷的JAVA课程很不错。

好的谢谢,我去看一下

哇好帅 发表于 2024-1-20 12:06:05

糖逗 发表于 2021-4-2 12:31
看B站上尚硅谷的JAVA课程很不错。

黑马的如何?
页: [1]
查看完整版本: JAVA学习Day7【面对对象1】