基础学习day05---面向对象一类,对象、封装
我肯定说,不知道、不清楚。
简单讲类是java中的基本单元,类是具有相同特性和行为的对象集合
1.3、类的定义
class 类名{
}
1.4、类包含
类中包含成员和行为(方法)
package com.pb.demo2;
/*
* 人类
*/
public class Person { //Persion为类名
/*
* 属性,name,sex,age
*/
public String name; //名字
public String sex ; //性别
public int age; //年龄 /*
*方法(行为)
*/
//吃饭
public void eat(){
System.out.println("吃饭");
}
//工作
public void work(){
System.out.println("工作");
}
}
1.5、三大特征
封装、继承、多态
二、类和对象关系
2.1、类和对象
类就是对现实生活中事物的描述。
对象就是这些事物,实实在在的个体
package com.day05; /**
* 汽车类
*
* @author Denny 属性对应类中变量 行为对应类中的函数(方法) 定义类就是在描述事物,就是在定义属性和行为
* 属性和行为共同成为类中的成员变量(成员变量和方法)
*/
public class Car { // 颜色
String color = "红色";
// 轮胎
int num = 4; // 运行跑起来的行为
public void run() { //局部变量
//int num=10;
System.out.println(color + " " + num);
} public static void main(String[] args) { Car c = new Car();// 声明汽车对象c
c.color = "黄色"; // 更改属性值
c.num = 8;
c.run(); // 调用方法 Car c1=c;
c1.color="白色";
c1.num=6;
c.run();
}
}
白色 6
成员变量作用于整个个类中
局部变量作用于方法或者文句中
在内存中的位置
成员变量在堆内存
局部变量在栈内存
package com.day05; /**
* 汽车类
*
* @author Denny 属性对应类中变量 行为对应类中的函数(方法) 定义类就是在描述事物,就是在定义属性和行为
* 属性和行为共同成为类中的成员变量(成员变量和方法)
* 作用范围
* 成员变量作用于整个个类中
* 局部变量作用于方法或者文句中
* 在内存中的位置
* 成员变量在堆内存
* 局部变量在栈内存
*/
public class Car { // 颜色
String color = "红色";
// 轮胎
int num = 4; // 运行跑起来的行为
public void run() { //局部变量
//int num=10;
System.out.println(color + " " + num);
} public static void main(String[] args) {
new Car().num=99;
new Car().color="blue";
new Car().run();
}
}
红色 4
3.1、隐藏对象的属性和实现细节,公对外提供公共的访问方式。
package com.day05; /**
* 人类
*
* @author Denny
*
*/
public class Person { private String name; // 姓名
private int age; // 年龄
private String gender; // 性别 // 自我介绍的方法
public void say() {
System.out.println("姓名:" + this.name + " 年龄:" + this.age + " 性别:" + this.gender);
} // getter、setter方法 提供的对外的访问
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
// 检查年龄是不是在0-150之间
if (age >= 0 && age <= 150) {
this.age = age;
} else {
System.out.println("年龄不合法!");
}
} public String getGender() { return gender;
} public void setGender(String gender) {
// 检查条件
if (gender.equals("男") || gender.equals("女")) {
this.gender = gender;
} else {
System.out.println("性别不合法只能是男或者女!");
}
} public static void main(String[] args) {
Person p = new Person();
p.setName("张三");
p.setAge(-20);
p.setGender("人妖");
p.say();
} }
结果:
性别不合法只能是男或者女!
姓名:张三 年龄:0 性别:null
public class Person {
private String name; // 姓名
private int age; // 年龄
private String gender; // 性别
public Person() { //无参数构造方法
}
//实现构造方法重载
public Person(String name, int age, String gender) { //有参数构造方法
this.name = name;
this.age = age;
this.gender = gender;
}
// 自我介绍的方法
public void say() {
System.out.println("姓名:" + this.name + " 年龄:" + this.age + " 性别:" + this.gender);
}
// getter、setter方法 提供的对外的访问
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
// 检查年龄是不是在0-150之间
if (age >= 0 && age <= 150) {
this.age = age;
} else {
System.out.println("年龄不合法!");
}
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
// 检查条件
if (gender.equals("男") || gender.equals("女")) {
this.gender = gender;
} else {
System.out.println("性别不合法只能是男或者女!");
}
}
}
public static void main(String[] args) {
Person p = new Person("张三",13,"男");//调用有参数的构造方法
p.say();
}
}
package com.day05; /**
* 人类
*
* @author Denny
*
*/
public class Person { private String name; // 姓名
private int age; // 年龄
private String gender; // 性别 /*
* 构造代码块:
* 作用:给对象进行初始化
* 对象 一建立就运行,而且优先于构造方法执行
* 构造代码块是给所有对象进行统一初始化
* 构造方法是给对应的对象初始化
*/
{ System.out.println("这是Person 的构造代码块");
} public Person() { } public Person(String name, int age, String gender) { this.name = name;
this.age = age;
this.gender = gender;
} // 自我介绍的方法
public void say() {
System.out.println("姓名:" + this.name + " 年龄:" + this.age + " 性别:" + this.gender);
} // getter、setter方法 提供的对外的访问
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
// 检查年龄是不是在0-150之间
if (age >= 0 && age <= 150) {
this.age = age;
} else {
System.out.println("年龄不合法!");
}
} public String getGender() { return gender;
} public void setGender(String gender) {
// 检查条件
if (gender.equals("男") || gender.equals("女")) {
this.gender = gender;
} else {
System.out.println("性别不合法只能是男或者女!");
}
} public static void main(String[] args) {
Person p = new Person("张三",13,"男");
Person p1=new Person(); } }
结果:
这是Person 的构造代码块
// 自我介绍的方法
public void say() {
System.out.println("姓名:" + this.name + " 年龄:" + this.age + " 性别:" + this.gender);
}
this:代表什么?
package com.day05; /**
*
* @author Denny this 语句的调用
*/
public class Person1 {
private String name; // 姓名
private int age; // 年龄 public Person1() { } public Person1(String name) {
this.name = name; // 为本对象name赋值 } public Person1(String name, int age) {
// 在构造方法中调用另一个构造方法时this必须放在第一行
this(name); // 调用另一个构造方法
this.age = age; } 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 void say() {
System.out.println("姓名:" + this.name + " 年龄:" + this.age);
}
public static void main(String[] args){
//声明一个参数的对象
Person1 p1=new Person1("张三");
p1.say();
Person1 p2=new Person1("张三",25);
p2.say(); } }
结果:
姓名:张三 年龄:25
基础学习day05---面向对象一类,对象、封装的更多相关文章
- java基础学习总结——面向对象1
目录 一.面向过程的思想和面向对象的思想 二.简单理解面向对象 三.面向对象的设计思想 四.对象和类的概念 五.如何抽象出一个类? 六.类(对象)之间的关系 七.Java与面向对象 八.为什么使用面向 ...
- python基础学习Day17 面向对象的三大特性之继承、类与对象名称空间小试
一.课前回顾 类:具有相同属性和方法的一类事物 实例化:类名() 过程: 开辟了一块内存空间 执行init方法 封装属性 自动的把self返回给实例化对象的地方 对象:实例 一个实实在在存在的实体 组 ...
- python基础学习Day15 面向对象、类名称空间、对象名称空间 (2)
一.类 先看一段代码: class Person: animal = '高级动物' walk_way = '直立行走' # 静态属性,静态变量,静态字段 language = '语言' def __i ...
- python基础学习 Day19 面向对象的三大特性之多态、封装 property的用法(1)
一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...
- python基础学习 Day19 面向对象的三大特性之多态、封装
一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...
- Java基础学习(三)—面向对象(上)
一.理解面向对象 面向对象是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节:这种思想是将数据作为第一位,而方法或者说是 ...
- 零基础学习python_类和对象(36-40课)
今天我们开始学习面向对象的知识咯,之前我对面向对象也学的懵懵的,因为感觉知道好像又不是特别清楚,接下来我们一起来学习类和对象吧.零基础的课程我都是看小甲鱼的视频学的,没基础的可以去这个网址下载视频学习 ...
- java基础学习05(面向对象基础01--类实例分析)
面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...
- java基础学习05(面向对象基础01)
面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...
- Java基础学习之面向对象(4)
目录 1.面向对象概述 1.1.类与对象的关系 1.2.类的具体描述 2.面向对象的三大特性 2.1.继承 2.2.多态 2.3.封装 1.面向对象概述 1.1.类与对象的关系 有对象吗,没有的话我给 ...
随机推荐
- css省略号布局实例截图
过多文字li标签出现使用css省略号样式截图 使用text-overflow样式让显示不完内容通过css实现省略号排版
- java正则表达式小练习(IP地址检测、排序,叠词的处理,邮件地址的获取)
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; import java.util.reg ...
- web.config中httpRunTime的属性
配置httpRuntime也可以让FileUpload上传更大的文件,不过设置太大了会因用户将大量文件传递到该服务器而导致的拒绝服务攻击(属性有说明) <httpRuntime> < ...
- Tips10:你可以像写文档一样自由的复制粘贴游戏组件(Game Object Component)
相对于添加组件后再进行调整和赋值,通过复制和粘贴已有游戏组件能够带来更高的效率.
- 想从事分布式系统,计算,hadoop等方面,需要哪些基础,推荐哪些书籍?--转自知乎
作者:廖君链接:https://www.zhihu.com/question/19868791/answer/88873783来源:知乎 分布式系统(Distributed System)资料 < ...
- Mergely – 免费的在线文档对比和合并工具
任何类型的文件(无论是否代码),我们可能要比较不同的版本,看发生了什么变化. 有些编辑器都有这个内置功能,其中一些则没有. Mergely 是一个免费使用的 Web 应用程序,帮你你迅速作出文档的差异 ...
- Centos7 禁止firewalld并使用iptables 作默认防火墙
一.停止并禁用firewalld [root@test ~]# systemctl stop firewalld [root@test ~]# systemctl disable firewalld ...
- C# 只启动一个实例完全解决方案
工作上经常会遇到"程序只能启动一个实例"这样的需求. 我想,这样的需求应该很普遍,所以没打算去动脑筋,去找谷歌问下就得了,用下来发现,不是这里不爽就是那里不行. 先说下我详细的几点 ...
- 浅谈DOM性能考虑
浅谈DOM性能考虑 很多人都会忽视脚本对Web应用整体性能的影响.为保证应用的流畅运行,在为文档编写和应用脚本时,需要注意一些问题.一.尽量减少访问DOM和尽量减少标记 访问DOM的方式对脚本性 ...
- IOS开发UI基础UIImagePickerController的属性
UIImagePickerController 1.+(BOOL)isSourceTypeAvailable:(UIImagePickerControllerSourceType)sourceType ...