Java面向对象

Java基础

面向对象的三大特性:封装、继承和多态。

封装

1、构造函数
语法:

访问修饰符   构造方法名() {
		//初始化代码
} ;

特征:1.当我们没有写构造函数,也能创建对象,系统提供了一个默认的无参构造函数
2.当手动写了构造函数,那么系统不在提供默认的构造函数

方法的重载:
1.在同一个类中
2.方法名相同
3.参数类别不同(类型,个数,位置)
4.和返回值,访问权限无关

static关键字
修饰成员变量:
Static final 数据类型 变量名=值;
静态常量:声明的时候就必须给初始值,其他地方不能修改
可以通过类名.变量名调用
修饰方法:
public static void 方法名(){}
静态方法:用类名. 方法名();

在这里插入图片描述

封装

封装的目的是为了保证数据的安全性
隐藏内部细节,提供对外接口
通过访问修饰符:
Private 隐藏内部细节
Public 提供对外接口
在提供的对外接口中做合法性判断。

This关键字:指代当前对象
This.属性
This.方法();
This();//必须在构造函数中调用,并且还必须是第一行,无参和有参不能相互调用。

继承

继承的使用:代码的复用
编写父类:

Class  父类类名{
 			//公共的属性和方法
} ;

编写子类:

Class  子类类名  extends  父类类名{
 			//子类特有的属性和方法
} ;

理解继承:
子类is a父类,就可以使用继承
在Java中继承使用extends实现
1.super关键字
在子类中调用父类的成员
Super();必须是子类构造函数的第一句话
Super.属性;
Super.方法();

2.父类中不能被子类继承的成员
父类的成员是private访问权限
父类和子类不在同一个包中,父类成员使用默认访问权限
父类的构造函数,子类不能继承
3.访问修饰符protected
可以修饰属性和方法
本类、同包、子类可以访问
在这里插入图片描述
3.子类创建对象,初始化顺序
父类的静态成员
子类的静态成员
父类的构造函数初始化
子类的构造函数
子类对象调用成员

方法的重写:
父子类中:
1.方法名,参数列表相同
2.返回类型相同,是父类方法的返回值类性的子类
3.访问权限不能严于父类父类重写方法
在这里插入图片描述
抽象类和抽象方法:
父类实例化是没有任何意义的。
设置父类未抽象类:
public abstract class Pet {
Print方法在父类中的实现对于子类是没有意义
public abstract void print();//子类必须重写该抽象方法

}
抽象类:
1.不能实例化
2.需要被继承,继承该抽象类必须重写所以抽象方法,否则子类也是抽象类
3.抽象类一般作为类型

抽象方法:
1.需要被子类重写
2.父类不需要对方法有具体实现
3.约束子类有什么行为

Final关键字:最终的
修饰成员变量:常量,定义的时候必须初始化,不能修改
修饰方法:该放不能发被重写
修饰类:该类不能被继承

多态

多态是同一个引用类型,使用不同的实例而执行不同操作 。
实现多态:
1.必须有继承关系的父子类
2.子类必须重写父类的方法
3.父类的类型指向子类对象:向上转型

父类 对象名=new  子类();

多态的使用:
使用父类作为方法的参数
使用父类作为方法的返回值

向上转型:自动类型转换
把子类对象赋值给父类的类型
父类 对象名=new 子类();

向下转型:强制类型转换
把父类的对象赋值给子类的数据类型,父类原本指向的就是该子类对象
子类 对象名=(子类)父类对象;

再做向下转型之前,最好使用instanceof运算符
对象 instanceof 类或者接口
能转换返回true,否则返回false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值