面向对象
/**
* 面向对象 抽象概念 表示任意存在的概念 面向过程:关注代码的实现细节
* 世间万物皆对象 面向对象:把细节整合到对象,找到对象就能实现对象的所有功能
* 对象划分两个部分
* 动态部分:行为 ---基于其属性而具有的动作
* 静态部分:属性---成员变量
*
* 什么是类?类就是同一类事物的统称,如果将一个事物抽象成对象,类就是这类事物的统称,如 鸟类、家禽类、人类等
* 类是构造对象时所依赖的规范
* 具有相同特性和行为的一类事物就称为类,类的思想就是这样产生的
* 类就是对象的设计图!!!
*
* 类与对象的关系:对一类事物进行抽取,共有的特征抽取成属性,把共有的行为抽取为方法,这一类事物就抽取成了类
* 类就是对象的概括
*
* 面向对象的编程设计的特征:1封装 2继承 3多态 4抽象
* 1封装是面向对象编程的核心思想,
* 将对象的属性和行为封装起来,
* 而将对象的属性和行为封装起来的载体就是类。
* 类通常对客户隐藏其实现的细节,这就是封装的思想
* 2当处理一个问题时,可以将一些有用的类保留下来,
* 这些类通常有相同的属性,
* 甚至相同的方法,当遇到同样的问题时可以拿来复用。
* 举例:鸽子具有与鸟类相同的属性和行为。便可以在创建信鸽类时拿来复用,并且保留鸟类具有的属性和行为。
* 3其实将父类对象应用于子类的特征就是多态
* 解释:多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类以及相似类。
* 该统一风格可以由父类来实现,根据父类统一风格处理,就可以实例化子类的对象。
* 由于整个事件的处理都只依赖于父类的方法,所以日后只要维护和调整父类的方法即可。
* 好处:降低了维护的难度,节省了事件。
* @author 冷夜雨花未眠 E-mail:787831425@qq.com
* @version 创建时间:2019年11月7日 下午1:18:40
*/
public class ObDemo2 {
public static void main(String[] args) {
//4创建对象
Person p=new Person();//new开辟堆内存,用于创建对象 对象是类的具体实现
//5给对象进行赋值
p.name="lili";
//p.age=10;
p.gender='女';
//6调用方法
p.eat();
p.sleep();
//如果是基本数据类型就是值的拷贝
//m(p.age);
//n(p);
mn(p);
//7输出
System.out.println(p.age);//如果没有对age没有赋值,就会显示系统默认值(在创建对象后)
/*char n='\u0000'; // '\''u'开头的是一个Unicode码的字符
System.out.println(p.age==n);//true
char m=' ';
System.out.println(p.age==m);//false
System.out.println(n);//输出一个空格
*/ }
public static void m(int i){//基本数据类型
i++;
}
public static void n(Person p){//引用类型是地址值的拷贝,改变堆内存,数值随之改变
p.age=10;
}
public static void mn(Person p){
p=new Person();//虽然是引用类型,但创建新的对象,把拷贝过来的地址值覆盖了,没有改变原堆内存就会改变
p.age=19;
}
}
//1创建类
class Person{
//2属性
//类中的成员变量,也就是属性,方法里面的变量是局部变量(随着方法的调用创建,结束销毁)
String name;
char gender;
int age;
//3方法
public void eat(){
System.out.println(name+"在吃饭");
}
public void sleep(){
System.out.println(name+"在睡觉");
}
}
/*
* Unicode可同时包含65536个字符,ASCII/ANSI只包含255个字符,
* 实际上是Unicode的一个子集。Unicode字符通常用十六进制编码方案表示,
* 范围在'\u0000'到'\uFFFF'之间。\u0000到\u00FF表示ASCII/ANSI字符。
* '\'u表示这是一个Unicode值.
*/
浙公网安备 33010602011771号