首页 > 代码库 > Java 封装 继承 多态

Java 封装 继承 多态

一、 封装

a) 概念:装进去,封起来

b) 作用:方便、安全

  1. 方便:调用(一处编写,N处调用),修改(一处修改,处处响应)。
  2. 安全:数据安全(将属性私有化,提供共有方法,可以在方法中验证传参的有效性,合法性),访问安全(通过包或访问修饰符,限制类或属性或方法的访问级别,只让需要知道的地方知道)

1.1、 构造方法

a) 定义:负责对象初始化任务,通常用来给属性赋值的。

b) 特点:与类同名,没有返回类型,系统默认会提供无参构造方法。

Dog dog = new Dog();

c) 变量的作用域(成员变量和局部变量同名):就近原则。所以为了区分同名成员变量和局部变量,引入了关键字this,this是指当前对象。

this(参数列表) 类内访问构造方法

必须位于其他构造方法的第一句话。

d) 如果我们为类写了有参构造,那么系统将不再提供无参构造。

e) 构造方法重载:

构造方法的参数列表不同:(参数列表的类型,数量,顺序不同)

和访问修饰符与返回类型无关

二、 继承

a) 概念:一种在不需要编写任何当前类代码的情况下,完成当前类功能扩展的能力。

b) 分类:实现继承(如概念),抽象继承,可视继承

  1. 抽象类,接口
  2. Form / JFrame (继承窗体的外观和编码能力)

c) 关系:

  1. Is a 继承
  2. Has a
  3. Like a( more than a)

d) 关键字:extends / implements

e) 访问修饰符(修饰属性或方法)

访问修饰符

类内

同包

子类(不同包)

其他

修饰类

Private

 

 

 

 

默认

 

 

Protected

 

 

public

 

2.1、 关键词this和super (访问构造方法,必须位于第一句。)

This:类内访问

Super:子类访问父类

 

2.2、 不能被继承的父类成员

a) 私有属性

b) 不在同包内的默认访问修饰符修饰的内容

c) 构造方法 

 

2.3、 继承关系的不同类型代码的执行顺序

a) 父类静态代码块

b) 子类静态代码块

c) 父类普通代码块

d) 父类构造方法

e) 子类普通代码块

f) 子类构造方法

 

2.4、 子类重写父类方法,重写和重载的区别

a) 重写:子类重写父类同名,同参方法。访问修饰付子类>=父类与返回类型子类<=父类。

b) 重载:同一个类内同名,不同参方法。与访问修饰符和返回类型无关。

 

三、多态

a) 概念:一种类型(父类),多种表现(子类)

b) 类型:父类类型作为方法参数,父类类型作为方法返回值

c) 类型转换: 子类对象向父类类型转换:自动类型转换 :向上转型

父类对象向子类类型转换:强制类型转换 :向下转型

对象类型运算符:boolean flag = 对象 instanceof 类型;

 

四、 静态关键字static

a) 可以修饰:属性、方法和类

b) 被修饰的属性和方法称之为类属性和类方法,在该类的所有对象中共享。

c) 静态方法和静态代码块只能访问静态成员。非静态方法可以访问静态或非静态成员。

d) 1、静态代码块,2、普通代码块,3、构造方法,4、自定义方法

 

 

五、 final 和 abstract

 

a) 两者是矛盾的,对立的,不可以同时存在。

b) Final修饰的类不可以被继承,修饰的变量不可以修改值,修饰的方法不能被重写。

c) Abstract可以修饰类和方法,抽象方法只能存在于抽象类中,抽象类是可以被继承的,抽象方法必须被继承类实现。

d) String,Math类为final类

e) Object中的getClass(),wiat(),notify()等final方法

f) Object中的toString(),hashCode(),equals()等非final方法

g) 重写Object的toString()方法,在输出对象时,直接输入对象的toString()方法返回值。否则输出对象的内存地址。

h) 重写equals方法,只要所有的属性值都相等,则是同一个对象。

Java 封装 继承 多态