javaSE:总结1

(1)继承 (2)访问控制 (3)final关键字 (4)对象创建的过程 (5)多态

1.1 基本概念

当多个类中有相同的特征和行为时,可以将共性的特征和行为提取出来组成一个公共类,让多个类吸收公共类中已有的特征和行为,而在多个类中只需要编写自己独有特征和行为的机制,就叫做继承。
使用继承可以提高代码的复用性、可维护性以及可扩展性。
在Java语言中使用extends(扩展)关键字来表达继承关系。

如:
public class Student extends Person{}
其中Person类叫做超类、父类、基类。

其中Student类叫做派生类、子类、孩子类。

1.2 注意事项

(1)子类可以继承父类的成员变量,包括私有成员变量但不能直接访问;
    子类不可以继承父类的构造方法以及私有成员方法;
    
(2)无论使用何种方式构造子类对象都会自动调用父类的无参构造方法用于初始化从父类中
   继承下来的成员变量,相当于在构造方法的第一行增加代码:super()的效果。
   
(3)Java语言中只能支持单继承,也就是一个子类只能有一个父类,但一个父类可以有多个子类
  
(4)使用继承必须满足: 子类 is a 父类 的逻辑关系,也就是不能滥用继承。

1.3 this和super关键字的比较(了解)

(1)基本概念
   this关键字可以代表本类类型的对象;
   super关键字可以代表父类类型的对象;

(2)使用方式
   使用this.的方式可以访问本类的成员变量和成员方法;
   使用super.的方式可以访问父类的成员变量和成员方法;

   使用this()的方式在构造方法的第一行表示调用本类中的其他构造方法;
   使用super()的方式在构造方法的第一行表示调用父类中的构造方法;

要求掌握的内容:
    a.使用this.的方式可以区分同名成员变量和局部变量;
    b.使用super(实参)的方式可以调用父类的构造方法;
    c.使用super.的方式可以调用父类中被重写的成员方法;

1.4 方法的重写(Override)

(1)基本概念
   从父类中继承下来的方法不足以满足子类的需求时,则需要在子类中重新写一个与父类中相同的方法来覆盖从父类中继承下来的版本,这个过程就叫方法的重写。

(2)重写的原则(笔试题)
   a.要求方法名相同、参数列表相同及返回值类型相同,从jdk1.5开始允许返回子类类型;
   b.要求访问权限不能变小,可以相同或者变大;
   c.要求不能抛出更大的异常(异常机制);

2.访问权限(笔试题)

2.1 常见的访问权限

访问控制符   访问权限   本类   本包中的类   子类   其它包中的其它类
    public       公有的     ok         ok        ok          ok
    protected    保护的     ok         ok        ok          no
    啥也不写     默认的     ok         ok        no          no
    private      私有的     ok         no        no          no

要求掌握的内容:
    a.public修饰的内容可以在任意位置使用;
    b.private修饰的内容只能在本类中使用;
    c.通常情况下,成员变量都使用private修饰,成员方法都使用public修饰;

2.2 包的定义

package 包名;
package 包名1.包名2.包名3;  - 定义包是为了便于管理并解决命名冲突的问题。

3.final关键字(重点)

3.1 基本概念

   final本意为"最终的,不可更改的",可以修饰类、成员方法以及成员变量等。

3.2 使用方式

   使用final关键字修饰类体现在该类不能被继承。
        - 为了防止滥用继承,如:java.lang.System类/String类等。
   使用final关键字修饰成员方法体现在该方法不能被重写。
        - 为了防止不经意间造成的重写,如:java.text.DateFormat类中的format方法。
   使用final关键字修饰成员变量表示该成员变量必须初始化而且不能更改。
        - 为了防止不经意间造成数据的改变,如:java.lang.Thread类中MAX_PRIORITY.

扩展:
   在以后的开发中很少单独使用static关键字和final关键字修饰成员变量,通常使用public static final共同修饰成员变量来表达常量的含义,常量要求所有字母大写不同单词之间采用下划线连接。
   如:
       public static final double PI = 3.1415926;

4.对象创建的过程(了解)

4.1 单个对象创建的过程

  (1)当程序运行起来后,则main()方法是程序的入口;
  (2)当new对象时没有指定成员变量的初始值,则采用默认初始化进行处理;
  (3)当成员变量采用显式初始化时,则采用显式初始化方式进行处理;
  (4)执行构造块可以对成员变量进行再次赋值;
  (5)执行构造方法体可以对成员变量进行再次赋值;
  (6)此时对象构造完毕,继续执行后续的代码;

4.2 子类对象创建的过程

  (1)当程序运行后,则main()方法是程序的入口;
  (2)当new子类对象时先加载父类再加载子类,先执行父类的静态代码块,
     再执行子类的静态代码块;
  (3)执行父类的构造块和父类的构造方法体,此时父类部分构造完毕;
  (4)执行子类的构造块和子类的构造方法体,此时子类对象构造完毕;
  (5)继续执行后续的代码;

5.多态(重中之重)

5.1 基本概念

   多态就是指同一种事物表现出来的多种形态。
   人:学生、教师、工人、...
   饮料:可乐、雪碧、红牛、...
   宠物:猫、狗、鸟、小强、...
   整数:byte b1 = 10; short s1 = 10; ...

5.2 语法格式

   父类类型 引用变量名 = new 子类类型();
如:
   Person pw = new Worker();  - 声明Person类型的引用指向Worker类型的对象.
   pw.show();
解析:
   当父类的引用指向子类的对象时,编译阶段调用Person类的show()方法,而在运行阶段最终调用Worker类的show()方法。

练习:
   自定义Person类实现封装,特征有:姓名和年龄,提供打印所有特征的行为;
   自定义Worker类继承Person类实现封装,特征有:薪水(salary),提供打印所有特征的行为;

5.3 多态的效果

  (1)当父类的引用指向子类的对象时,父类的引用可以直接调用父类的成员方法;
  (2)当父类的引用指向子类的对象时,父类的引用不可以直接调用子类的成员方法;
  (3)对于父子类都有的非静态成员方法来说,编译阶段调用父类的,运行阶段调用子类的;
  (4)对于父子类都有的静态成员方法来说,编译阶段和运行阶段都调用父类的版本;
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值