Java面向对象之类的设计

    技术2022-07-20  71

    面向对象

    类:对一事物是抽象的,概念上的定义

    对象:是实际存在的该类事物的每个个体

    面向对象程序设计的重点就是类的设计

    设计类

    其实就是设计类的成员

    属性=成员变量=field=域,字段

    方法=成员方法=函数=method

    package demo; public class Person { String name; String sex; int age; public String say() { return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]"; } }

    类和对象的使用

    面向对象思想落地的实现

    创建类,设计类的成员创建类的对象通过“对象.属性”或者“对象.方法”调用对象的结构

    实例化说明

    如果创建了一个类的多个对象,则每个对象都拥有一套独立的类属性(非static的)

    意味着我们修改了一个对象的属性a,则不会影响另外一个对象属性a的值

    //测试类 public class PersonTest { public static void main(String[] args) { //2. 创建Person类的对象 Person p1 = new Person(); //Scanner scanner = new Scanner(System.in); //调用对象的结构:属性、方法 //调用属性:“对象.属性” p1.name = "Tom"; p1.isMale = true; System.out.println(p1.name); //调用方法:“对象.方法” p1.eat(); p1.sleep(); p1.talk("Chinese"); //******************************* Person p2 = new Person(); System.out.println(p2.name);//null System.out.println(p2.isMale); //******************************* //将p1变量保存的对象地址值赋给p3,导致p1和p3指向了堆空间中的同一个对象实体。 Person p3 = p1; System.out.println(p3.name);//Tom p3.age = 10; System.out.println(p1.age);//10 } } //1.创建类,设计类的成员 class Person{ //属性 String name; int age = 1; boolean isMale; //方法 public void eat(){ System.out.println("人可以吃饭"); } public void sleep(){ System.out.println("人可以睡觉"); } public void talk(String language){ System.out.println("人可以说话,使用的是:" + language); } }

    属性

    属性(成员变量)VS局部变量

    相同点:

    定义变量的格式:数据类型 变量名=变量值先声明后使用变量都有其对应的作用域

    不同点

    在类中声明的位置不同

    ​ 属性:直接在定义类的一对{}里面

    ​ 局部变量:声明在方法体内,方法形参,构造器形参、构造器内部的变量

    关于访问修饰符的不同

    ​ 属性:可以声明访问修饰符

    ​ 局部变量:不可以声明访问修饰符

    默认初始化值不同;

    ​ 属性:类的属性,根据其类型,都有默认初始化值。

    ​ 整型(byte、short、int、long):0

    ​ 浮点型(float、double):0.0

    ​ 字符型(char):0 (或’\u0000’)

    ​ 布尔型(boolean):false

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

    局部变量:没有默认初始值,意味着我们在调用局部变量之前一定要显示的赋值

    ​ 特别的形参在调用时我们赋值即可

    在内存中加载的位置:

    ​ 属性:加载到堆空间

    ​ 局部变量:加载到栈空间

    public class UserTest { public static void main(String[] args) { User u1 = new User(); System.out.println(u1.name); System.out.println(u1.age); System.out.println(u1.isMale); u1.talk("韩语"); u1.eat(); } } class User{ //属性(或成员变量) String name; public int age; boolean isMale; public void talk(String language){//language:形参,也是局部变量 System.out.println("我们使用" + language + "进行交流"); } public void eat(){ String food = "烙饼";//局部变量 System.out.println("北方人喜欢吃:" + food); } }

    方法

    public void eat(){} //无参无返public void sleep(int hour){} //有参无返public String getName(){}//无参有返public String getNation(String nation){}//有参有返

    方法的声明:权限修饰符 返回值 方法名(形参列表){

    ​ 方法体

    }

    注意: static ,final,abstract来修饰的方法

    关于权限修饰符:默认方法的权限修饰符先都是使用public

    返回值类型: 有返回值VS无返回值

    ​ 有返回值则在方法声明是,指定返回值的类型,同事方法体中 需要使用return关键字来返回指定的类型的变量或者常量 “return 数据”

    ​ 无返回值则在方法声明时,使用void来表示,通常没有返回值是 在方法体中就不需要写return 如果一定要写那么这样定义“return;”来表示此方法结束

    方法名:属于标识符 遵循标识符的规则和规范 “见名知意”

    形参列表: 方法可以声明0个,1个,或多个形参。

    return关键字的使用:

    ​ 使用范围:使用在方法体中

    ​ 作用 :结束方法 ​ 返回数据类型

    注意: 方法中不可以定义方法,但是可以调用方法

    public class CustomerTest { public static void main(String[] args) { Customer cust1 = new Customer(); cust1.eat(); //测试形参是否需要设置的问题 // int[] arr = new int[]{3,4,5,2,5}; // cust1.sort(); cust1.sleep(8); } } //客户类 class Customer{ //属性 String name; int age; boolean isMale; //方法 public void eat(){ System.out.println("客户吃饭"); return; //return后不可以声明表达式 // System.out.println("hello"); } public void sleep(int hour){ System.out.println("休息了" + hour + "个小时"); eat(); // sleep(10); } public String getName(){ if(age > 18){ return name; }else{ return "Tom"; } } public String getNation(String nation){ String info = "我的国籍是:" + nation; return info; } //体会形参是否需要设置的问题 // public void sort(int[] arr){ // // } // public void sort(){ // int[] arr = new int[]{3,4,5,2,5,63,2,5}; // //。。。。 // } public void info(){ //错误的 // public void swim(){ // // } } }
    Processed: 0.009, SQL: 10