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<integer> send(int totalMoney,int count){}

对象的向上转型和向下转型

/*
 * 对象的向上转型,就是父类引用指向之类对象 
 * 向上转型一定是安全的 从小范围转向了大范围
 * 但是向上转型有一个弊端:对象一旦向上转型为父类 
 * 那么就无法调用子类原本特有的内容
 * 解决方案:用对象的向下转型(还原)
 */
/*
 * 对象的向下转型,其实是一个还原的动作。
 * 格式:
 * 		子类名称 对象名 = (子类名称) 父类对象;
 * 含义:将父类对象,【还原】成为本来的子类对象。
 * 本来是猫不能还原成为狗
 * Animal animal = new Cat(); //本来是猫向上转型成为动物
 * Cat cat = (Cat) animal; //本来是猫 ,
 * 已经被当做动物了, 还原回来成为原来的猫
 * 
 * 注意事项:
 * A、必须保证对象本来创建的时候,就是猫,才能向下转型为猫
 * B、如果对象创建的时候本来不是猫,现在非要向下转型成为猫,就会报错
 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值