Java第二天--三大特性

一、封装

封装的重要性

验证数据

此问题在面向对象和类记录过
例如一般人类的你年龄没有大于1000的,但是有些用户可能录入非法数据,所以要对属性的赋值进行控制,封装即可避免此种问题

什么是封装

概念

尽可能隐藏对象的内部实现细节,控制对象的修改及访问的权限。

用到的访问修饰符

private(可将属性修饰为私有,仅本类可见,即起来的类中无法通过 类名.属性名访问实例属性)

public class Student{
	private String name;
	private int age;
	pubilc void setAge(int age){
	if(age<120&&age>0 )
	this.age=age;
	}
	public void setName(String name){
	this.name=name;
	}
	//get方法省略
}

二、继承

程序中的继承

两个类之间的关系是 is a 的关系就是继承,例如 有两个类 Animal 和Dog,狗是动物那么狗就是Animal的子类,其中动物是父类。

如何选择父类

  1. 满足 is a 的关系
    即狗是动物,动物就是父类

  2. 选择的父类要精细,和其他子类的重合点要多,越接近越好。
    重合点越少越接近Object类,所以尽量选择和子类重合点多的父类。

  3. 在一组相同或类似的类中,抽取出共性的特征和行为,定义在父类中,实现重用。

继承语法

 class 子类 extends 父类 { }

继承之后,子类可以使用父类中的属性和方法,也可定义子类独有的属性和方法。

继承的好处

既提高代码的复用性,又提高代码的可扩展性

继承的特点

Java为单继承,一个类只能有一个直接父类,但可以多级继承,属性和方法逐级叠加。

不可被继承

1.构造方法

类中的构造方法,只负责创建本类对象,不可继承

2.private修饰的属性和方法

访问修饰符的一种,仅本类可见

3.父子类不在同一个package中,default修饰的属性和方法

仅同包可见

访问修饰符

本类同包非同包子类其他
private
default
protected
public

private 最严格
public 最宽松

方法

方法的覆盖(重写)

原则
  1. 方法名称、参数列表、返回值类型必须与父类相同。
  2. 访问修饰符不能比父类更严格。
执行

调用时优先执行子类覆盖@Override后的方法

Super的使用

在子类中,可直接访问从父类继承到的属性和方法,但如果父子类的属性或方法存在重名(属性遮蔽,方法覆盖)时,需要加以区分,才可专项访问。
若要复用父类的方法可以用super关键字调用

继承中的对象创建

在具有继承关系的对象创建中,构建子类对象会先构建父类对象。
由父类的共性内容,叠加子类的独有内容,组成完整的子类对象
图片来源,千锋 视频

调用父类的构造方法

在子类中的构造方法中,会自动调用父类无参的构造方法
super要放在方法的第一句。
也可在super中传入参数,会自动调用父类带有参数的构造方法

this与super

this

this表示当前对象的引用,调用本类(包括继承)的属性、方法、本类构造方法

super

表示父类对象引用,调用父类的属性、方法、构造方法

多态

生活中的多态是指客观事物在人脑中的主管反应。
主观意识上的类别与客观存在的对象具有is a 关系时,即形成多态

程序中的多态

概念

父类引用指向子类对象,从而产生多种形态

Animal a=new Dog();

二者具有直接或间接的继承关系,父类引用其子类对象,即形成多态。
父类引用可以调用父类声明的属性和方法,不可调用子类独有的属性和方法

合理性

逻辑上,Dog is a Animal
语法上(自动类型转换)

多态中的方法覆盖

如果子类中覆盖了父类中的方法,以父类型引用调用此方法时,优先执行子类中的方法。

多态的应用

场景一

使用父类作为方法形参实现多态,使方法参数的类型更为宽泛,父类做参数,传入子类对象

场景二

使用父类作为方法返回值实现多态,使方法可以返回不同子类对象。

向上转型(装箱)

只可调用父类的方法,或子类重写的方法

向下转型(拆箱)

即基本类型中的强制转换,向下转换成子类的类型,前提是必须已经向上转型。

instanceof关键字

向下转型前,判断引用中的对象的真实类型,可以保证向下类型转换的正确性.

语法

引用 instanceof 类型 //返回boolean类型结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值