JAVA面向对象(总结篇) | 您所在的位置:网站首页 › 群主的对象怎么叫 › JAVA面向对象(总结篇) |
面向对象的语言中包含了三大基本特征,封装、继承和多态
public class people {
//属性
int age=22;
String name="limu";
//成员方法 没有static关键字
public void sleep() {
System.out.println("进入休息状态...");
} //休息
public void eat() {
System.out.println("进入吃饭状态");
} //吃饭
public void study() {
System.out.println("进入学习状态");
}//学习
}
创建people的类 通常情况下 一个类并不能直接使用 需要根据类创建一个对象 ,才能使用 import 导包 、也就是指出需要使用的类 在什么位置 import 包名称 类名称 当和当前类属于同一个包的情况 可以省略不写 通过类创建一个对象 类名称 对象名 =new 类名称() 使用 : 使用成员变量 :对象名.成员变量名 使用成员方法 : 对象名.成员方法名 带有static 的方法就是普通的方法 不需要类和对象就能生成 使用对象类型作为方法的参数 java成员变量和局部变量的区别 // 定义的位置不一样 局部变量 :在方法的内部 成员变量:在方法的外部直接写在类当中 //作用范围不一样 局部变量:只有在方法中能使用 成员变量:整个类都可以通用 //默认值不一样 局部变量:没有默认值 成员变量:如果没有赋值,会有默认值 面对对象的三大特性之:封装性封装性在java里的体现 1、方法就是一种封装 2、关键字private也是一种封装 代表私有化 间接访问private成员变量 就是定义一对Getter/Setter方法 必须叫setxxx或者getxxx命名规则 对于Getter来说 不能有参数 返回值类型和成员变量对应 对于Setter来说 不能有返回值 参数类型和成员变量对应 this 关键字 //当方法的局部变量和类的成员变量重名的时候,根据就近原则,优先使用局部变量 //如果需要访问本类中的成员变量 需要使用格式 //this.成员变量名 //谁调用的方法,谁就是this //在方法的内部才能用this构造方法 构造方法是专门用来创建对象的方法 当我们用new来创建对象的时候 其实就是在调用构造方法 public 类名称(参数类型 参数名称){ //方法体 }注意事项: 1、构造方法的名称必须和所在的类名称完全一样 2、构造方法不要写返回值类型 连void也不要写 3、用途 用来使用对象 4、new 就是在调用构造方法 用new创建对象的时候就执行了构造方法里的语句 5、如果没有编写任何构造方法 那么编译器就会赠送一个构造方法 没有任何参数、方法 6、一旦编写了任何一个构造方法 那么编译器将不再赠送 7、构造方法也是可以进行重载的、方法名称相同、方法参数不同 这个叫重载 抽象的概念子类就是一个父类,所以是继承关系 抽象类的关键字 abstract 如果父类当中的方法不确定如何进行{}方法体实现,那么这就应该是一个抽象方法 抽象类不能直接new 创建对象 抽象类可以有构造方法 publuc abstract class abc{} public abstract void abc(){} 接口的概念接口就是一种公共的规范标准。 只要符合规范标准 就可以大家通用。 接口定义的基本格式: //接口就是多个类的公共规范 //接口是一种引用数据类型,最重要的内容就是其中的:抽象方法。 //如何定义一个接口的格式 /* public interface 接口名称{ // 接口内容 备注:换成了关键字interface之后,编译生成的字节码文件仍是.java --》 .class如果是java7 那么接口中可以包含的内容有: *1、常量 *2、抽象方法如果是java8,还可以额外包含有: *3、默认方法 *4、静态方法如果是java9,还可以包含有: *5、私有方法 */接口使用步骤1、接口不能直接使用,必须有一个“实现类”来实现该接口格式:public class 实现类名称 implements 接口名称{//…}2、接口的实现类必须覆盖重写(实现)接口中所有的抽象方法实现 :去掉abstract 关键字 进行使用3、 创建实现类的对象,进行使用 *注意事项: *如果实现类并没有覆盖重写接口当中所有的抽象方法 *那么这个实现类自己就必须是抽象类/* 在任何版本的java中,接口都能定义抽象方法格式:public abstract 返回值类型 方法名称(参数列表);注意事项:1、接口当中的抽象方法,修饰符必须是两个固定的关键字2、public abstract这两个关键字修饰符,可以选择性省略3、方法的三要素,可以随意定义4、 接口中的所有方法不能有具体的实现,也就是说接口中的方法必须是抽象方法 *//* 从java8开始 ,接口里允许定义默认方法。格式:public default 返回值类型 方法名称(参数列表){方法体}备注:接口当中的默认方法可以解决接口升级的问题 / /接口的默认方法,可以通过接口实现类对象,直接调用接口的默认方法,也可以被接口实现类进行覆盖重写 */接口的私有方法定义 /* 从java9开始 java允许接口中定义私有方法。1、普通私有方法,解决多个默认方法直接重复代码问题 * 格式 private 返回值类型 方法名称(参数列表){ * 方法体 * }*/ 多态性面向对象三大特征:封装性、继承性、多态性 extends继承或者implementers实现,是多态性的前提 一个对象拥有多个形态 即成为多态性、例如 小明是一个学生,但同时也是一个人 小明同时具备了学生形态、和人类形态 多态的格式和使用: 发红包案例分析 /* 发红包案例分析1、群主的一笔金额,从群主余额中扣除,平均分成n等份2、群友收到红包、分到的红包计到自己的余额中用户类:姓名、余额群主类:(发红包的个数、发红包的金额)发红包的方法普通成员类:(收到的红包金额)收红包的方法发红包的逻辑:返回值类型 :ArrayList方法名称: send参数列表: 1、总共发多少钱 ,2、分成多少份public ArrayList send(int totalMoney,int count){} 对象的向上转型和向下转型 /* * 对象的向上转型,就是父类引用指向之类对象 * 向上转型一定是安全的 从小范围转向了大范围 * 但是向上转型有一个弊端:对象一旦向上转型为父类 * 那么就无法调用子类原本特有的内容 * 解决方案:用对象的向下转型(还原) */ /* * 对象的向下转型,其实是一个还原的动作。 * 格式: * 子类名称 对象名 = (子类名称) 父类对象; * 含义:将父类对象,【还原】成为本来的子类对象。 * 本来是猫不能还原成为狗 * Animal animal = new Cat(); //本来是猫向上转型成为动物 * Cat cat = (Cat) animal; //本来是猫 , * 已经被当做动物了, 还原回来成为原来的猫 * * 注意事项: * A、必须保证对象本来创建的时候,就是猫,才能向下转型为猫 * B、如果对象创建的时候本来不是猫,现在非要向下转型成为猫,就会报错 */ |
CopyRight 2018-2019 实验室设备网 版权所有 |