基础学习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.类与对象的关系 有对象吗,没有的话我给 ...
随机推荐
- Lua基础
局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效. 代码块:一个控制结构.一个函数体.一个chunk(一个文件或文本串)(Lua把chunk当做函数处 ...
- 单链表List的C实现
头文件———————————————————————————————— //单链表的实现 #ifndef _LIST_H_ #define _LIST_H_ #include <stdlib.h ...
- DDD:建模原语 之 四象图(转载的神文)
“模型.状态和行为特征.场景”和“四象图”,建模观的命名与立象. 建模原语:四象图 作者:achieveidea@gmail.com 命名:模型.结构特征.行为特征.场景(及其规约). 释义:模型,描 ...
- LeetCode——Jump Game II
Description: Given an array of non-negative integers, you are initially positioned at the first inde ...
- CentOS6.5菜鸟之旅:安装rpmforge软件库
一.rpmforge软件库 rpmforge是包含4000多种CentOS软件的软件库,被CentOS社区认为是安全和稳定的软件库. 二.安装rpmforege 1. 在http:/ ...
- Python基础:开篇
一.概述 Python基础 是对 Python(2.7版本)基本语法的要点总结,主要参考了以下资料: Python核心编程(第二版) Learning Python (3rd Edition) Pyt ...
- MySQL服务器权限表
MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化.这些权限表分别user,db,table_priv,columns_p ...
- 004_URL 路由 - URL 路由
在Web Form 情况下,每一个 ASPX页面既是一个文件,又是一个队请求自包含的响应.而在 MVC 情况下,请求是由控制器类中的动作方法处理的,而且与硬盘上的文件没有一对一的相互关系. ASP.N ...
- 【jQuery基础学习】11 jQuery性能简单优化
关于性能优化 合适的选择器 $("#id")会直接调用底层方法,所以这是最快的.如果这样不能直接找到,也可以用find方法继续查找 $("p")标签选择器也是直 ...
- sql 两列相加存到另一列
假设表table1有a.b两个列,想生成另一个列为a列值+b列值计算列添加语句如下ALTER TABLE table1ADD c AS a+b