java面向对象编程(上)
java面向对象学习的三条主线
),将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,强调用对象去调用方法。
- 封装(Encapsulation)
- 继承(Inheritance)
- 多态(Polymorphism)
常见的类的成员有:
- 属性:对应类中的成员变量 。 属性 = 成员变量 = Field =(域、字段)
- 行为:对应类中的成员方法 。 (成员)方法 = 函数 = Method
- 创建类的对象 = 类的实例化 = 实例化类
理解“万事万物皆对象”:
- 在java语言范畴中,我们都将功能、结构等封装到类中,通过类的实体化,来调用具体的功能结构。
- 涉及到java语言与前端HTML、后端的数据库交互时,前后端的结构在Java层面交互时,都体现为类。对象
修饰符 class 类名 {
属性声明;
方法声明; }
说明:修饰符public:类可以被任意访问
类的正文要用{ }括起来 举例:
public class Person{
private int age ; //声明私有变量 age
public void showAge(int i) { //声明方法showAge( )
age = i;
}
}
对象的创建和使用:
创建对象语法: 类名 对象名 = new 类名();
使用“对象名.对象成员”的方式访问对象成员(包括属性和方法)
/*
1、创建类,设计类的成员
2、创建类的对象
3、通过“对象.属性”、“对象.方法”调用对象的结构 4、如果创建了一个类的多个对象,则每个对象都独立拥有一套类的属性(非static的)
意味着:如果我们修改一个对象的属性a,则不影响另外一个属性a的值
*/
public class OopDemo1 {
public static void main(String[] args) {
//创建Person类的对象
Person p1 = new Person(); //调用对象的结构:属性、方法
//调用属性:“对象.属性”
p1.name = "女驸马";
p1.age = 18;
p1.isMale = false; //调用方法:“对象.方法”
p1.eat();
p1.sleep();
p1.talk("chinese"); //创建第二个对象
Person p2 = new Person();
System.out.println(p2.name);//null,与p1不同 //创建第三个对象
Person p3 = p1;
//将p1变量保存的对象地址值赋给了p3,导致p1与p3指向了堆空间的同一个对象实体
System.out.println(p3.name);//女驸马
}
} class Person{
//属性
String name;
int age;
boolean isMale; //方法
public void eat(){
System.out.println("人可以吃饭");
} public void sleep(){
System.out.println("人可以睡觉");
} public void talk(String language){
System.out.println("人可以说话,用的是:" + language);
}
}
类的访问机制
- 在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static,编译不通过。)
- 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。
匿名对象:
我们创建的对象,没有显式的赋给一个变量名,即为匿名对象
特征:匿名对象只能使用一次。
类中属性(field)的使用
属性语法格式:
修饰符 数据类型 属性名 = 初始化值 ;
举例:
public class Person{
private int age; //声明private变量 age
public String name = “Lila”; //声明public变量 name
}
- 说明1: 修饰符:常用的权限修饰符有:private、缺省、protected、public;其他修饰符:static、final (暂不考虑)
- 说明2:数据类型: 任何基本数据类型(如int、Boolean) 或 任何引用数据类型。
- 说明3:属性名:属于标识符,符合命名规则和规范即可。
变量的分类:成员变量与局部变量。
- 在方法体外,类体内声明的变量称为成员变量。
- 在方法体内部声明的变量称为局部变量。
属性(成员变量)与局部变量的区别
public class OopDemo2 {
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;
int age;
boolean isMale; public void talk(String language){//language:形参,也是局部变量
System.out.println(language);
}
public void eat(){
String food = "大米";//局部变量
System.out.println("南方人喜欢吃:" + food);
}
}
类中方法的声明与使用:
方法的定义:
- 描述类应该具有的功能
- 将功能封装为方法的目的是,可以实现代码重用,简化代码
- Java里的方法不能独立存在,所有的方法必须定义在类里。
方法的声明格式:
权限修饰符 返回值类型 方法名(参数类型 形参1,参数类型 形参2,……){
方法体
return 返回值;
}
其中权限修饰符:public,缺省,private, protected等。
返回值类型:有返回值 VS 没有返回值
- 如果有返回值,则必须在方法声明时,指定返回值的类型。同时,方法中,需要使用return关键字来返回指定类型的变量或常量。
- 如果方法内没有返回值:则方法声明时,使用void来表示,通常,没有返回值的方法就不用returrn,但是,如果使用的话,只能用“return”表示结束方法的意思。
- 方法名:属于标识符。命名时遵循标识符命名规则与规范。、
- 形参列表:可以包含零个,一个或多个参数。多个参数时,中间用“,”隔开。
- 方法体:方法功能的体现。
- 返回值:方法在执行完毕后返还给调用它的程序的数据。
- return关键字的使用:使用范围:在方法体内。作用:a.结束方法。 b.对于有返回值类型的方法,使用“return 数据”方法返回所要的数据。return后面不能跟执行语句。
java面向对象编程(上)的更多相关文章
- JAVA面向对象编程课程设计——网络版单机斗地主
一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...
- JAVA面向对象编程课程设计——web版斗地主
一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ...
- java面向对象编程知识点总结
一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...
- Java面向对象编程(一)
由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...
- JAVA学习(五):Java面向对象编程基础
Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...
- (一)如何理解java面向对象编程
哲学中,事物总是螺旋式上升,波浪式前进.因而编程也逐渐向人类更容易理解的方向前进,多年来人们苦苦追求的编程境界 : 高扩展性(extensibility),高复用性(reuseable).java语言 ...
- Java面向对象编程基础
一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...
- java 面向对象编程。。。。
经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...
- 《Java面向对象编程》
<Java面向对象编程> 第11章 对象的生命周期 11.1 创建对象的方式 用new语句创建对象 运用反射手段,调用java.lang.Class 或者 java.lang.Const ...
随机推荐
- Linux 进程间传递文件描述符
文章目录 文件描述符 文件数据结构 共享文件 UNIX域socket实现传递文件描述符 进程间传递打开的文件描述符,并不是传递文件描述符的值.先说一下文件描述符. 文件描述符 对内核来说,所有打开的文 ...
- miniFTP项目实战三
项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...
- 题解 w
传送门 一直觉得有点后效性什么的,也不知道怎么写 这题什么时候再康一遍,第一次见这个样子的树形DP,是个树上带不定权边的DP(??? 这里能树形DP的原因好像是在这里所有子节点的状态都能表示出来 还有 ...
- Docker中安装了gitlab,忘记了管理员密码,进行管理员密码重置
重置docker中gitlab中root账号的密码 一.进入Docker的gitlab容器中 1.查看所有容器 docker ps 2.进入gitlab容器中 docker exec -it gitl ...
- flutter添加启动图及设置启动时间
首先贴个官方的设置方法,看这里:https://flutterchina.club/assets-and-images/#%E6%9B%B4%E6%96%B0%E5%90%AF%E5%8A%A8%E9 ...
- 梦琪小生 【转】【WPF】WPF MVVM 简单实例
1 新建WPF 应用程序WPFMVVMExample 程序结构如下图所示. 2 Model实现 在Model文件夹下新建业务类StudentModel(类文件StudentModel.cs),类的详细 ...
- 【linux】vim常用命令
转自:https://www.runoob.com/linux/linux-vim.html vi/vim 的使用 基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输 ...
- java字符串(String和StringBuilder)
1.String 1.1.创建String对象的方法(三种方式) String s1 = "zhang"; 创建一个字符串对象zhang,名为s1 String s2 = new ...
- Map 综述(四):彻头彻尾理解 HashTable
摘要: Hashtable与HashMap都是Map族中较为常用的实现,也都是Java Collection Framework 的重要成员,它们的本质都是 链表数组.本文深入JDK源码并从定义.构造 ...
- MongoDB - 文档之间的关系 + _sort和投影
1. 文档对象之间的关系 一对一 (one TO one) - 例如: 夫妻 (一个丈夫 对应 一个妻子) - 在MongoDB中, 可以通过内嵌文档的形式来体现出一对一的关系 演示: 首先在 my_ ...