当前位置: 首页 > news >正文

#java学习笔记(面向对象)----(未完结)

一基础相关知识点:

1. 一个对象的调用

首先我们创建一个Phone类

public class Phone {//成员变量String name;int age;String favourite;//成员方法public void myName(){System.out.println(name);}public void myAge(){System.out.println(age);}public void myFavourite(){System.out.println(favourite);}
}

根据Phone类我们创建一个对象。再访问成员变量,调用成员方法。

public class usingPhone {public static void main(String [] args){//创建对象Phone P = new Phone();//访问成员变量P.age = 19;P.name = "ax";P.favourite = "eat";System.out.println(P.age+" "+P.name+" "+P.favourite);//调用成员方法P.myAge();P.myName();P.myFavourite();}
}

执行结果:

内存图分析

2. 两个对象使用一个方法:

创建Phone类:

public class Phone {//成员变量String name;int age;String favourite;//成员方法public void myName(){System.out.println(name);}public void myAge(){System.out.println(age);}public void myFavourite(){System.out.println(favourite);}
}

具体代码调用:

public class usingPhone {public static void main(String [] args){//创建对象Phone P = new Phone();//访问成员变量P.age = 19;P.name = "ax";P.favourite = "eat";System.out.println(P.age+" "+P.name+" "+P.favourite);//调用成员方法P.myAge();P.myName();P.myFavourite();//创建对象Phone Q = new Phone();//访问成员变量Q.age = 191;Q.name = "ax1";Q.favourite = "eat1";System.out.println(Q.age+" "+Q.name+" "+Q.favourite);//调用成员方法Q.myAge();Q.myName();Q.myFavourite();}
}

内存图:

3. 两个引用指向同一个对象:

Phone 类的创建:

public class Phone {//成员变量String name;int age;String favourite;//成员方法public void myName(){System.out.println(name);}public void myAge(){System.out.println(age);}public void myFavourite(){System.out.println(favourite);}
}

具体的代码调用:

public class usingPhone {public static void main(String [] args) {//创建对象Phone P = new Phone();//访问成员变量P.age = 19;P.name = "ax";P.favourite = "eat";System.out.println(P.age + " " + P.name + " " + P.favourite);//调用成员方法P.myAge();P.myName();P.myFavourite();Phone Q = P;System.out.println(Q.age + " " + Q.name + " " + Q.favourite);}
}

内存图:

4. 使用对象类型作为方法的参数:

普通的方法调用:

public class usingPhone {public static void main(String [] args) {//创建对象Phone P = new Phone();//访问成员变量P.age = 19;P.name = "ax";P.favourite = "eat";System.out.println(P.age + " " + P.name + " " + P.favourite);//调用成员方法P.myAge();P.myName();P.myFavourite();//方法调用define(100);}public static void define(int num){System.out.println(num);}
}

使用对象类型作为方法的参数:

public class usingPhone {public static void main(String [] args) {//创建对象Phone P = new Phone();//访问成员变量P.age = 19;P.name = "ax";P.favourite = "eat";System.out.println(P.age + " " + P.name + " " + P.favourite);//调用成员方法P.myAge();P.myName();P.myFavourite();//方法调用define(P);//等同于Phone ax = P;}public static void define(Phone ax){System.out.println("m"+"\t"+ ax.age);}
}

内存图:

5. 使用对象类型作为方法的返回值:

Phone类

public class Phone {//成员变量String name;int age;String favourite;//成员方法public void myName(){System.out.println(name);}public void myAge(int age){System.out.println(age);}public void myFavourite(){System.out.println(favourite);}
}

具体调用:

public class usingPhone {public static void main(String [] args) {//创建对象Phone P = new Phone();//访问成员变量P.age = 19;P.name = "ax";P.favourite = "eat";System.out.println(P.age + " " + P.name + " " + P.favourite);//调用成员方法P.myAge(19);P.myName();P.myFavourite();Phone Q = define();System.out.println(Q.age + " \n" + Q.name + "\n" + Q.favourite);}public static Phone define(){Phone Def = new Phone();Def.age = 18;Def.myAge(200);return Def;}
}

内存图:

二.成员(全局)变量与局部变量:

两者的区别:

1.定义的位置不一样

局部变量:在方法的内部。

成员变量:在方法的外部,直接写在类中。

============================================

2.作用范围不一样

局部变量:只有方法当中才可以使用,除了方法就不能再用。

成员变量:整个类中都可以使用。

=============================================

3.默认值不一样

局部变量:没有默认值,如果想使用,必须手动赋值。

成员变量:如果没有赋值,会有默认值,规则与数组的相同。

=============================================

4.内存的位置不一样

三.面向对象的步步实现

封装:将一些细节信息隐藏,直接调用即可。

1.方法就是一种封装

2.private也是一种封装

1.方法的封装

public class an7 {public static void main(String[] args) {int[] arr = {12,22,23,42,52,26,72,82,39};int max1 = methodmax(arr);System.out.println(max1);}public static int methodmax(int[] arr){int max = arr[0];for (int i = 1; i < arr.length; i++) {if (arr[i]>max){max= arr[i];}}return max;}
}

运行结果:

2 private关键字

    写了private在本类中的访问可以正常使用,在其他类的调用不可以直接访问,


    我们使用间接访问的方法,setter,getter.(boolean是setter与is--)


    setter不能有返回值,用于传递参数值.


    getter不能有参数,用于返回成员变量.

something 类的创建:

public class something {String name;private int age;public void show(){System.out.println("Name: "+name+"\t"+age);}public void setAge(int Newage){age=Newage;}public int getAge(){return age;}}

something类的调用:

public class usingsomething{public static void main(String[] args) {something Something = new something();Something.name="ax";Something.setAge(20);Something.show();}}

3 this关键字(this要写在方法内)

这种情况下的name均为参数name,而不是成员变量name.

public class helloax {String name;int age;public void Name(String name) {System.out.println(name+"你好"+name);}}

如果想以此区分两个name,可以使用关键字this.~

public class helloax {String name;int age;public void Name(String name) {System.out.println(name+"你好"+this.name);}}

4 定义一个标准的类:(java bean)

一个标准类的满足下列条件:

1.所有的成员变量都要使用private修饰

2.对每一个成员变量编写一对getter,setter方法用于初始化

3.编写一个无参数的构造方法

4.编写一个全参数的构造方法

实例展示:

public class student {private String name;private int age;private String genter;public student(String name, int age, String genter) {this.name = name;this.age = age;this.genter = genter;}public student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGenter() {return genter;}public void setGenter(String genter) {this.genter = genter;}
}

具体调用:

public class usingstudent {public static void main(String[] args){student P = new student();P.setAge(19);P.setName("anxian");P.setGenter("nan");System.out.println("姓名"+P.getName()+"\t"+"年龄"+P.getAge()+"\t"+"性别"+P.getGenter());System.out.println("===============================");student Q =new student("anxian",19,"nan");System.out.println("姓名"+Q.getName()+"\t"+"年龄"+Q.getGenter()+"\t"+"性别"+Q.getGenter());}
}

相关文章:

  • 非范型ArrayList和泛型List<T>
  • Service服务在Android中的使用
  • UDP双向通信
  • SQL注入实例(sqli-labs/less-17)
  • CMake,Makefile,CMakeLists.txt的关系和作用
  • 10分钟学会Docker的安装和使用
  • 概述:Dubbo、Nacos、 Zookeeper 等分布式服务协调与治理等技术
  • WUP-CH34X ch34x系列芯片USB转串口通信uniapp插件使用说明
  • leetcode算法刷题记录--7
  • 编程新手必看:彻底理解!与~的取反操作
  • [C++][opencv]基于opencv实现photoshop算法色阶调整
  • 职场英语培训柯桥外语学校学外语学英语到银泰泓畅学校
  • 【Python学习手册(第四版)】学习笔记19-函数的高级话题
  • 虚拟机macos安装brew、llvm并使用cmake构建项目
  • vue3前端开发-小兔鲜项目-添加购物车操作第一步
  • CentOS7简单部署NFS
  • CSS 提示工具(Tooltip)
  • JSONP原理
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • React16时代,该用什么姿势写 React ?
  • storm drpc实例
  • ubuntu 下nginx安装 并支持https协议
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 分布式事物理论与实践
  • ------- 计算机网络基础
  •  一套莫尔斯电报听写、翻译系统
  • 原生Ajax
  • 栈实现走出迷宫(C++)
  • NLPIR智能语义技术让大数据挖掘更简单
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​第20课 在Android Native开发中加入新的C++类
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #WEB前端(HTML属性)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (C语言)共用体union的用法举例
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Qt) 默认QtWidget应用包含什么?
  • (八)Flask之app.route装饰器函数的参数
  • (转)树状数组
  • (自用)交互协议设计——protobuf序列化
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .ai域名是什么后缀?
  • .DFS.
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core 中插件式开发实现
  • .net MVC中使用angularJs刷新页面数据列表
  • .net 怎么循环得到数组里的值_关于js数组
  • //TODO 注释的作用
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @GetMapping和@RequestMapping的区别
  • @html.ActionLink的几种参数格式
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • [ IOS ] iOS-控制器View的创建和生命周期