java面向对象基础知识
package com.oracle.demo02;
public class Person {
private String name;// 此时外部的类不能访问
private int age;// 隐藏实现细节
// 使用方法,提供接口进来的值 属性都私有化,并提供setXxx getXxx方法对其进行访问。
public void setName(String name) {
this.name = name;
}
// 使用取值、、用于给出用户反馈
/*
* public String getName(){ return name; }
*/
public void setAge(int a) {
if (a >= 0 && a < 149) {
age = a;
} else {
System.out.println("该年龄不可信");
}
}
public int getAge() {
System.out.println("get");
return age;
}
public void speak() {// 方法可以被外界访问
// name.age此时为成员变量,非局部变量
System.out.println("我的名字是" + name + "今年" + age + "岁。");
}
// 在person类中定义功能,判断两个人是否同龄人
public boolean people(Person p) {
return p.age==this.age;//此时的this,指的是谁调用该方法就是谁
//传入两个,一个通过调用传入,一个通过形参传入
}
}
举例:创建对象及方法的调用
package com.oracle.demo02;
public class Demo01 {
public static void main(String[] args) {
Person p = new Person();
p.setName("张三");
p.setAge(35);
p.speak();
Person p2 = new Person();
p2.setName("xiao张三");
p2.setAge(35);
p2.speak();
//比较两人是否为同龄人
boolean flag=p2.people(p);
System.out.println(flag);
}
}
注:此时的成员方法的修饰符为public,而在测试类main中修饰符为public static
三、对象调用方法内存图

|
区别
|
类
|
对象
|
|
关系
|
抽象的,比如人类的皮肤属性,未有具体的值
|
具体的,通过类,new一个新的对象,给皮肤属性赋值(黑、白、黄)
|
|
区别
|
成员变量
|
局部变量
|
|
写法位置
|
直接定义在类中
|
定义在方法或{}语句中
|
|
内存位置
|
在堆中保存,具有地址
|
在栈中保存
|
|
生命周期
|
随着对象的出现而出现,使用gc()垃圾回收机制清除
|
随着方法的出现而出现,随着方法的消失而消失
|
|
初始化值
|
成员变量出现在堆中,属性有默认值;例如int 0;Boolean FALSE;String null;
|
局部变量出现在栈中,必须人为赋值才能使用
|
|
区别
|
基本数据类型
|
引用数据类型
|
|
传递的具体的值,在栈中存在,方法用完执行弹栈
|
传递地址,在堆中存在,方法和main中均指向同一个地址和对象
|
java面向对象基础知识的更多相关文章
- Java面向对象基础知识汇总
OOP:Orient Object Programe AOP:Aspect Orient Programe 封装:Encapsulation 继承:Inheritance 多态:Polymorphmi ...
- Java 多线程——基础知识
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符
[重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符 1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...
- JAVA相关基础知识
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分, ...
- 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学
076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
[重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final ...
- java必备基础知识(一)
学习的一点建议: 每一门语言的学习都要从基础知识开始,学习是一个过程,"万丈高楼平地起",没有一个好的地基,想必再豪华的高楼大厦终究有一天会倒塌.因此,我们学习知识也要打牢根基,厚 ...
- Python 面向对象基础知识
面向对象基础知识 1.什么是面向对象编程? - 以前使用函数 - 类 + 对象 2.什么是类什么是对象,又有什么关系? class 类: def 函数1(): pass def 函数2(): pass ...
随机推荐
- nodejs+nginx+mongdb+redis安装学习笔记(之nodejs安装)
基础环境 本文安装示例使用ubuntu-14.10-server 64位 操作系统,并没有在其他系统中测试 第一步:安装Nodejs 1.通过apt-get install 安装 (1)下载安装deb ...
- Java编程思想——第14章 类型信息(二)反射
六.反射:运行时的类信息 我们已经知道了,在编译时,编译器必须知道所有要通过RTTI来处理的类.而反射提供了一种机制——用来检查可用的方法,并返回方法名.区别就在于RTTI是处理已知类的,而反射用于处 ...
- mysql数据库如何赋予远程某个IP 访问权限
1.授权用户root使用密码jb51从任意主机连接到mysql服务器: 代码如下: GRANT ALL PRIVILEGES ON *.* TO 'ROOT'@'%' IDENTIFIED BY 'j ...
- 领扣(LeetCode)两数之和II - 输入有序数组 个人题解
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值 ...
- 《算法导论中文版》PDF 下载
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 在有关算法的书中,有一些叙述非常严谨,但不够全面:另一些涉及了大量的题材,但又缺乏严谨性.本书将严谨性和全面性融为 ...
- 使用shiro做权限管理的学习笔记整理
Shiro权限管理 参考:https://www.cnblogs.com/jpfss/p/8352031.html Shiro解决的问题 授权和鉴别的问题:Authenrization(授权) Aut ...
- JSONPath入门之Snack3篇
Snack3 for java 一个微型JSON框架 基于jdk8,60kb.有序列化反序列化.解析和转换.支持 Json path 查询. <dependency> <groupI ...
- Rust中的RefCell和内部可变性
RefCell Rust在编译阶段会进行严格的借用规则检查,规则如下: 在任意给定时间,要么只能有一个可变引用,要么只能有多个不可变引用. 引用必须总是有效. 即在编译阶段,当有一个不可变值时,不能可 ...
- 远程连接mysql出现1045错误的解决办法
第一步:停止MySQL服务 第二步:在你MySQL的安装目录下找到my.ini,文件,打开文件查找到 [mysqld] ,在其下方添加上一行 skip-grant-tables,然后保存. 第三步:启 ...
- VS2019提示scanf不安全问题
VS2019提示scanf不安全问题 我们现在学的就是使用scanf()语句进行输入,但是vs2019中却报错显示不安全 首先我先来说一下scanf和scanf-s的区别 scanf()函数是标准C中 ...