Day08_面向对象第三天

1、代码块(掌握)

1、概述
     由{}扩起来的代码称之为代码块,类或者方法也可认为是代码块,但是一般不这么说,我们平时所说的代码块指的是孤零零的{}

2、代码块作用
     局部代码块作用
     让变量尽可能早的从内存中消失,提高效率
     构造代码块作用是
     把所有构造方法中的共同的内容定义在构造代码块中,提高代码复用性,代码块先于构造方法执行,但是一般不用,最终目的初始化成员变量
     工作中用的很少,主要应对面试

注意:我们以后说的代码块仅仅指构造代码块,并且这个东西在开发中极少用到

2、继承(掌握)

1、概述-什么是继承,继承的由来(理解)

1、多个类中存在相同属性和行为时,将这些内容抽取到单个类中,那么多个类无需在定义属性和行为,只需要继承即可

2、多个类称为 子类或派生类, 单个类称为父类或者超类

3、通过extends关键字让他们产生关系

2、继承的好处及特点(掌握)

好处:

1、提高代码的复用性

2、让类与类产生关系,是多态的前提

特点:

1、JAVA中的类只支持单继承,不支持多继承。(因为如果可以多继承,就会出现调用不明确的问题)

2、JAVA支持多层继承 (继承体系)

3、什么时候使用继承(掌握)
        子类是父类的一种,如果B类是A类的一种就用继承关系

注意:不要为了获取某个功能而去继承

3、子父类使用变量时,变量的查找顺序(掌握)

1、首先在局部范围找,有就使用

2、在本类成员位置找,有就使用

3、在父类成员位置找,有就使用,没有就报错

4、this和super比较(掌握)

1、概念上的区别(理解)

super代表的是父类内存空间标识

this代表所在方法所属对象的引用

2、什么时候使用(理解)

1、当子父类中出现同名成员可以用super区分

2、子类调用父类的构造方法可以用super

3、调用方式(掌握)

1、super:

通过super可以直接调用父类的构造方法,成员变量,成员方法。

调用构造方法:super()

调用成员变量:super.变量名

调用成员方法:super.方法名()

2、this:

通过this可以直接调动本类的构造方法,成员变量,成员方法

调用构造方法:this()

调用成员变量:this.变量名

调用成员方法:this.方法名()

4、注意事项(掌握)

1、this代表本类对象的引用

2、super代表父类内存空间的标志

5、重写override和重载overload(掌握)

1、重写override概念(掌握)

子父类关系中,子类中存在与父类中方法声明完全一样的方法叫重写

一句话:除了方法体以外其他都相同,但是子类修饰符权限要大于等于父类

2、重载overload概念(掌握)

一个类中或者子父类关系中存在多个同名方法,并且参数列表不同的方法 叫重载

 子父类关系中:子类中的方法和父类中的方法构成了重载关系

 

3、重写的作用\应用(理解)

               升级改造父类的方法

4、注意(掌握)

               只有方法才存在重写,变量不存在

6、子父类间成员方法注意事项(掌握)

1、父类中私有方法不能被覆盖

2、子类方法访问权限大于父类方法访问权限   (父类如果是public,子类只能是public)

7、子父类间构造方法特点和注意事项(掌握)

1、子类中构造方法的特点(理解)

子类默认构造方法都访问了父类的无参构造方法,子类构造方法中都有默认语句super(),并且默认只能是无参的super()语句

因为子类会具备父类中非私有数据,这个初始化靠父类完成,所以先调用父类构造方法来初始化父类中的数据

2、如果父类无无参构造,子类构造如何访问父类构造(掌握)

1、通过super(参数)调用父类带参构造方法

2、通过this(..)调用本类构造方法 //知道就行,一般不用,但是需要注意的是如果一个类中所有的构造方法第一句都调用this(..),这样是错误

3、构造方法执行完后会创建该类的对象吗?

不一定,子类的构造方法第一行调用父类的构造方法时,不会创建对象

比如super(),调用了构造方法但是没有创见对象

4、注意     

构造方法中的this()和super()语句必须放第一行,并且只能取其一

8、子父类间静态代码块,代码块,构造方法执行顺序(掌握)

1、优先级

静态代码块 -> 构造代码块 ->构造方法

2、执行顺序

父类静态代码块->子类静态代码块->父类构造代码块->父类构造方法->子类构造代码块->子类构造方法

3、静态代码块,构造代码块,构造方法的作用

都是给成员变量进行赋值,只不过静态代码块给静态成员变量赋值

9、子类如何使用父类的私有成员变量(理解)

1、子类调用父类的带参构造访问父类的私有属性,但是只能给父类的私有属性赋值

2、子类调用父类的set方法给父类中的私有成员变量赋值,通过调用父类的get方法获取父类的成员变量

10、final关键字的概述和使用(掌握)

1、概述

很多时候有些方法内容时不能被重写的。而我们知道父类方法声明为public就可以被重写。针对这种情况,我们可以做个标记,告诉别人此类不能被重写
    final关键字:最终的意思,可以修饰类,变量,成员方法

2、被final修饰的内容的特点(掌握)
    被final修饰的方法不能被重写
    被final修饰的类不能被继承
    被final修饰的变量其实是常量,命名规则:全部大写,每一个单词间用_分割

3、常量
    字面值常量 :  ’a’,’aa’,234
    自定义常量:被final修饰的变量

4、被final修饰的类有哪些(慢慢记)

java.lang.reflect.Array

boolean的包装类java.lang.Boolean

byte的包装类java.lang.Byte

char的包装类java.lang.Character

double的包装类java.lang.Double

float的包装类java.lang.Float

int的包装类java.lang.Integer

long的包装类java.lang.Long

short的包装类java.lang.Short

void的包装类java.lang.Void

String类java.lang.String

System类java.lang.System

Class类java.lang.Class<T>

编译器java.lang.Compiler类

Math类java.lang.Math

两个可变字符序列类java.lang.StringBuffer

与java.lang.StringBuilder

Scanner类java.util.Scanner

正则匹配器java.util.regex.Matcher

正则表达式编译形式类java.util.regex.Pattern

5、被final修饰的变量注意事项(理解)

1、被final修饰的变量必须被显示的赋值一次

1、在定义变量的时候直接赋值 final NAME = "";

2、在构造方法中对它进行赋值

3、在构造代码块中对它进行赋值

6、被final和static同时修饰的成员变量有什么特点(理解)

1、被final和static同时修饰的变量必须被显示的赋值一次

1、在定义变量的时候直接赋值 static final NAME = "";

2、通过静态代码块赋值(特例,接口中除外)

一般情况final修饰成员变量的时候,一般和static还有public配合使用,并且显示给一个初始化值

7、被static修饰的内容随着类的加载而加载,并没有创建对象,那为什么还会有默认的初始化值

因为他在方法区中的静态方法区中,在这里面的数据也会有默认的初始化值

11、标准代码练习,至少3次(掌握)

注意:不要所有的类都定义到一个Java源文件中,这是非常不好的开发习惯.一个Java源文件对应一个class类,

父类

  1. /**
  2. * 父类
  3. */
  4. publicclassFu{
  5. /**姓名*/
  6. privateString name;
  7. /**年龄*/
  8. privateint age;
  9. publicFu(){
  10. }
  11. publicFu(String name,int age){
  12. this.name = name;
  13. this.age = age;
  14. }
  15. /**
  16. * 获取姓名
  17. */
  18. publicString getName(){
  19. return name;
  20. }
  21. /**
  22. * 设置姓名
  23. * @param name 姓名
  24. */
  25. publicvoid setName(String name){
  26. this.name = name;
  27. }
  28. /**
  29. * 获取年龄
  30. */
  31. publicint getAge(){
  32. return age;
  33. }
  34. /**
  35. * 设置年龄
  36. */
  37. publicvoid setAge(int age){
  38. this.age = age;
  39. }
  40. }

子类

  1. /**
  2. *子类
  3. */
  4. publicclassZiextendsFu{
  5. publicZi(){
  6. super();//提醒你你不写的他会自动提供
  7. }
  8. publicZi(String name,int age){
  9. //调用父类的构造方法,初始化父类的属性
  10. super(name, age);
  11. }
  12. }

测试

  1. /**
  2. *测试类
  3. */
  4. publicclassTest{
  5. publicstaticvoid main(String[] args){
  6. Zi zi1 =newZi();
  7. Zi zi2 =newZi("张三",12);
  8. System.out.println(zi1.getName());
  9. System.out.println(zi2.getName());
  10. zi1.setName("李四");
  11. System.out.println(zi1.getName());
  12. }
  13. }

12、今天必须掌握的内容。以及常见的笔试题和面试题(学完这个就可以放心学习后面的知识了)

1、说说什么是继承,继承的由来

见上面

2、说说继承的好处和特点,什么时候定义继承关系

见上面

3、说说继承关系中成员内容的特点

成员变量:就近原则

成员方法:重载,重写

构造方法:所有类都直接或间接继承Object类,子类构造第一行默认调用super(),如果父类无空参构造,必须通过super(参数)显示调用父类的有参构造

4、谈谈this和super

见上面。从概念和使用两方面说即可

概念

this代表本来类对象的引用,谁调用this就代表谁

super代表父类内存空间的标识

使用

都可以调用成员变量,成员方法,构造方法。只不过this调用的本类的,super调用的父类的

5、谈谈final关键字

见上面 可以修饰什么,被修饰的内容的特点,哪些类别final修饰,修饰的成员变量的初始化方式有几种,修饰的静态成员变量 的初始化有几种,继续坎静态..

6、说说重写和重载

见上面(必须说前提)说完以后说说这其实是继承中成员方法的特点,可以在说说成员变量,构造方法的特点

6、今天的标准代码必须敲的非常熟练

什么叫熟练?刚开始敲得时候一般在想为什么这么写,熟练后想的就是就应该这么写,哪有为什么,当什么都觉得利索应当的时候表示熟练了

7、说说代码块,静态代码块的作用

代码块:给成员变量赋值

静态代码块:给静态成员变量赋值的

8、如何给本类的私有成员赋值,如何给父类的私有成员赋值

如何给本类的私有成员赋值,构造方法,set方法

如何给父类的私有成员赋值,子类通过调用父类构造super(实际参数列表)给父类的私有属性赋值,还可以调用父类的set方法给父类的私有属性赋值

9、在子父类关系中,静态代码块,代码块,构造方法的执行顺序

父类静态代码块,子类静态代码块,父类的构造代码块,父类的构造方法,子类的构造代码块,子类的构造方法

来自为知笔记(Wiz)

时间: 2024-10-11 00:29:50

Day08_面向对象第三天的相关文章

面向对象的三个特征。

引用文章:http://blog.csdn.net/ma1kong/article/details/4457044 引用介绍:一篇偏向JAVA的文章.对此,我删除了一些文字,保持对C++适用. 面向对象的三个特性:封装,继承,多态. 特定的作用:封装可以隐藏实现细节,使得代码模块化:继承可以扩展已存在的代码模块(类):都属于代码重用.多态则是为了实现接口重用.多态是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用(个人理解:实际就是虚函数的作用). 一.封装 1:封

面向对象的三个特性:封装

面向对象的三个特性:封装.继承.多态 //1.封装目的:让类更加安全,不让外界直接访问类的成员 //具体做法[1]将成员设为私有:访问修饰符 class ren { [var $age;] private $age; } $r=new ren(); echo $r->age;//访问不到 [2]造成员方法来操作变量 class ren { private $age; //制造方法去给变量$age赋值 public function SetAge($a) { if($a>18 and $a<

01 面向对象的三条主线

面向对象的三条主线: 1.类及类的成分 2.面向对象的三大特性 3.其他的关键字:this super import package abstract static final interface等 1.java程序是关注于类的设计.类从代码的角度:并列关系!   从执行.设计的角度:关联关系.继承关系.聚合关系 class A{ } class B{ A  a = new A(); } 2.类的成分:属性   方法  构造器  代码块  内部类 2.1 属性:①变量的分类:成员变量(属性 Fi

荒芜的周六-PHP之面向对象(三)

hi 又是开森的周六了.积攒的两周的衣服,终于是差不多洗完了.大下午的才来学点东西~~ 1.PHP面向对象(三) 四.OOP的高级实践 4.3 Static-静态成员 <?phpdate_default_timezone_set("PRC");/** * 1. 类的定义以class关键字开始,后面跟着这个类的名称.类的名称命名通常每个单词的第一个字母大写. * 2. 定义类的属性 * 3. 定义类的方法 * 4. 实例化类的对象 * 5. 使用对象的属性和方法 */ class

面向对象的三个基本特征

最近找了一篇面向对象的介绍,看过后,感觉不错,浅显易懂,所以转载给大家看看!!! 面向对象的三个基本特征(讲解)面向对象的三个基本特征是:封装.继承.多态. 封装封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 继承面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情

面向对象的三个基本特征 和 五种设计原则

一.三个基本特征 面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 继承 面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 通过继承创建的新类称为"子类"或"

java面向对象的三种特征简述(随笔)

刚才有个刚学java的小菜问我面向对象的三种特性,我给他简单的讲了讲,以下是我十年来对java面向对象特性的简单阐述: 封装 封装就是把一个事物的属性和行为抽象出来,写到一个类里边,也就是按照事物的特性归类.也就是抽象事物的公共属性和方法. 继承 和咱们人类的继承差不多,就是老子有的东西儿子也有,只要儿子从老子那继承一下就OK了. 多态 就是同一个类里可以有相同的方法,但相同方法的参数是不同的.

面向对象的三个基本特征(转载)

面向对象的三个基本特征(讲解) 面向对象的三个基本特征是:封装.继承.多态. 封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 继承 面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 通过继承创建的新类称为"子类"

面向对象系列三(多态)

面向对象的多态,我们先用生活中的多态来理解.大学的校园四月,是社团活动最紧忙的一个月.届时,学校的相关管理部门会对各社团上交的"社团活动策划案"进行审批后下发.以我曾参加的一个话剧社作为例子,社长接到审批的文书后,会对整个社团组织内部人员进行职权分工,编剧部.后勤部.外联部.秘书部.文艺部所有部门各有分工,分头积极准备工作,大家为了完成共同一部话剧热火朝天地干了起来. 这里审批的"社团活动策划案"同意办活动(一条命令),接到审批文书,来到"社长"