Java(13) 抽象和封装
一、简述从现实世界中抽象出类的步骤
第一:找出分类(分析出类)
第二:找出类的特征(分析类的相关属性)
第三:找出类的行为(分析类的方法)
二、常量(经常出现的变量值)
2.1 语法:
public static final 数据类型 常量名 = 常量值;
注意:1.final最终的,修饰的变量不能被修改
2.变量名的所有字母都大写,多个单词用下划线(_)分割,
例如:public static final String SEX_MALE ="Q仔";
常量的访问式:类名.常量名
示例:
public class Example1 {
String name = "无名氏";//昵称
int health =100;//健康值
int love = 0;//亲密度
public static final String SEX_MALE= "雌";
public static final String SEX_FEMALE = "雄";
String sex = SEX_MALE;//性别
public void ji(){
System.out.println("宠物的自白:\n我的名字叫"+this.name+",健康值是"+this.health
+",和主人的亲密度是"+this.love+",我是一只"+this.sex+"。");
}
}
企鹅类
public class Text1 {
public static void main(String[] args){
Example4 qi = new Example4();
System.out.println("第一个企鹅的性别是:"+qi.sex);
qi = new Example4();
qi.sex =qi.SEX_FEMALE;
System.out.println("第二个企鹅的性别是:"+qi.sex);
qi = new Example4();
qi.sex =qi.SEX_MALE;
System.out.println("第三个企鹅的性别是:"+qi.sex);
}
}
测试类
运行结果为:
三.构造方法(特殊方法,用来创建对象,初始化值)
3.1 语法:
public 类名( 参数列表){
//方法体
}
a.使用
类名 对象名 = new 构造方法名(参数);
Dog d = new Dog();
b.与一般方法的区别
1,构造方法没有返回值类型;
2,构造方法的方法名就是类名,一般方法可以任意取
3,构造方法调用:new 构造方法名(参数);
一般方法调用:对象名.方法名(参数);
c.构造方法的作用
1,创建方法对象
2,初始化值(属性值);
注意:当你没有写构造函数时,java会提供默认的无参构造函数
例如:public Dog(){
}
示例2:
public class Example2{
String name = "无名氏";//昵称
int health =100;//健康值
int love = 0;//亲密度
String sex = "Q仔";//性别
public Example6(){
name = "楠楠";
love =20;
sex = "Q妹";
System.out.println("执行构造方法");
}
public void ji(){
System.out.println("宠物的自白:\n我的名字叫"+this.name+",健康值是"+this.health
+",和主人的亲密度是"+this.love+",我是一只"+this.sex+"。");
}
public static void main(String[] args){
Example6 qi = null;
qi = new Example6();
qi.ji();
}
}
无参构造方法
运行结果为:
四、方法重载
方法名一样,参数列表不一样
注意:重载与返回值了类型和访问修饰符无关
public class Example8 {
String name = "无名氏";//昵称
int health =100;//健康值
int love = 0;//亲密度
String sex = "Q仔";//性别
public Example8(){
name = "楠楠";
love =20;
sex = "Q妹";
System.out.println("执行构造方法");
}
//两个参数的构造方法
public Example8(String name,String sex){
this.name = name;
this.sex = sex;
}
public Example8(String name,int health,int love,String sex){
this.name = name;
this.health= health;
this.love = love;
this.sex = sex;
}
public void ji(){
System.out.println("宠物的自白:\n我的名字叫"+this.name+",健康值是"+this.health
+",和主人的亲密度是"+this.love+",我是一只"+this.sex+"。");
}
public static void main(String[] args){
Example8 qi = null;
qi = new Example8();
qi.ji();
qi = new Example8("丫丫","企鹅");
qi.ji();
qi = new Example8("妹妹",80,20,"Q仔");
qi.ji();
}
}
方法重载
运行结果为:
六、封装
6.1 作用:隐藏类不实现细节;
6.2 步骤:
1.采用了private修饰符的变量不能在类外部访问,而通过public修饰的set和get方法访问
2.在set方法中编写相应存取控制语句可以避免出现不符合实际需求的赋值
将属性均设为private权限,这样的属性只在类内可见,
用public权限的ste方法和get方法实现对属性的存取。
在set方法中对输入的属性值的范围进行判断,简单说,指定某一事物的值并要进行判断的时候用set
6.3 this关键词
this:表示当前对象
调用属性:this.属性名
调用方法:this.方法名();
this():表示调用构造函数。
注意:this(),必需写在构造函数的第一行。
Java(13) 抽象和封装的更多相关文章
- Java之抽象和封装
① 如何从现实世界中抽象出类? 根据软件开发需求: 发现类-->发现类的属性-->发现类的方法 ② 构造方法的作用和特点是什么? 作用:在创建对象时执行一些初始化操作 ...
- java 使用抽象工厂封装特性方法
1.创建抽象类:封装含有相同特性的方法. */ public abstract class AbstractPayment { public abstract String progress() th ...
- Java的继承、封装与多态
Java的继承.封装与多态 基本概念 面向对象OO(Object Oriented):把数据及对数据的操作方法放在一起,作为一个相互依存的整体,即对象. 对同类对象抽象出共性,即类. 比如人就是一个类 ...
- Java基础_0303:封装性初步
class Book { // 定义一个新的类 private String title; // 书的名字 private double price; // 书的价格 public void getI ...
- 关于Java的特点之封装
抽象 1.简单理解 我们在前面去定义一个类时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模版).这种研究问题的方法称为抽象. 封装--什么是封装 封装就是把抽象出来的数据和对 ...
- Atitit. C# java 的api 目录封装结构映射总结
Atitit. C# java 的api 目录封装结构映射总结 C# java ref System.Reflection System.Type, java.lang.ref concurrent ...
- PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
PHP面向对象三大特点学习 学习目标:充分理解抽象.封装.继承.多态 面象对向的三大特点:封装性.继承性.多态性 首先简单理解一下抽象:我们在前面定义一个类的时候,实际上就是把一类事物共有的属性和 ...
- Redis操作Set工具类封装,Java Redis Set命令封装
Redis操作Set工具类封装,Java Redis Set命令封装 >>>>>>>>>>>>>>>>& ...
- Redis操作List工具类封装,Java Redis List命令封装
Redis操作List工具类封装,Java Redis List命令封装 >>>>>>>>>>>>>>>> ...
随机推荐
- 配置用户Log on as service
Logon to the computer with administrative privileges. Open the ‘Administrative Tools’ and open the ‘ ...
- Vue笔记(props和 mounted)
1.mounted 1.1mounted中使用$nextTick会导致页面挂掉 mounted() { // 页面卡死 this.$nextTick(() => { this.setUrl() ...
- 02 Django REST Framework 序列化
01-创建序列化类 # 方式一: publish_list = models.Publish.objects.all() # 导入序列化组件 from django.core import seria ...
- codeforces#1154F. Shovels Shop (dp)
题目链接: http://codeforces.com/contest/1154/problem/F 题意: 有$n$个物品,$m$条优惠 每个优惠的格式是,买$x_i$个物品,最便宜的$y_i$个物 ...
- ModuleNotFoundError: No module named 'redis'
在安装过Redis后,通过Python程序导入redis时,遇到一个“ModuleNotFoundError: No module named redis”错误,网上查了下原因,解决办法如下: Pyt ...
- Map the Debris 轨道周期
返回一个数组,其内容是把原数组中对应元素的平均海拔转换成其对应的轨道周期. 原数组中会包含格式化的对象内容,像这样 {name: 'name', avgAlt: avgAlt}. 至于轨道周期怎么求, ...
- LVS实现负载均衡原理
负载均衡集群是load balance 集群的简写.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备有F5.NetsNetscale.这里主要是学习lvs. === ...
- 图解从 URL 到网页通信原理
前言 一.文本对话--从请求到响应 二.TCP/IP 协议族介绍 三.基于TCP/IP通信过程 四.TCP建立连接及断开(重点补充) 小结 前言 互联网的原始目的,就是为了传输文本(文本对话).那我们 ...
- Python基础:编码规范(4)
1.命名规范 Python中不同代码元素采用不同命名方式: ◊ 包名:全部小写字母,中间可以由点分隔开.作为命名空间,包名需具有唯一性. ◊ 模块名:全部小写字母,如果是多个单词构成,使用下划线分隔. ...
- css的寬高約束
https://blog.csdn.net/qq_26780317/article/details/80736514