Day07_面向对象第二天

1、构造方法(掌握)

1、构造方法的特点(掌握)

A、方法名必须和类名保持一致

B、没有返回值类型并且没有具体的返回值

2、构造方法的作用(掌握)

给对象的属性初始化

3、注意事项(理解)

A、如果没有明确给出构造方法,那么系统会默认给出一个无参构造方法

B、只要明确给出构造方法,系统将不在提供无参构造(以后必须手动给出无参构造,因为可以避免很多错误发生

C、构造方法的重载体现在参数列表不同,构造方法与其他方法没有关系

4、给私有的成员变量赋值的方式(掌握)

A、通过set方法,推荐使用

B、通过构造方法

C、在定义成员变量的时候手动赋值(private String name = “yongliang”;)

D、通过反射中的Field类的对象给对象的属性赋值(以后学)

5、一个类中构造方法应该定义几个?

这个没有具体的规定,自己想写几个就写几个,看需求。可以一个都不写,系统会提供一个默认的,我一般都会定义一个无参构造,和一个有参构造,该有参构造初始化该类中的所有成员变量

2、构造方法和setter方法对比(了解)

1、区别

构造方法是在创建对象的时候给成员变量赋值,并且只能赋值一次

set方法是在创建完对象以后对成员变量的值进行修改,或者赋值,可以多次

最终目的:都是给成员变量赋值,只不过实现方式不一样

3、面向对象之标准代码(掌握)

要求:闭着眼睛写出来

定义几个构造方法是不确定,需要具体需求,我们标准代码只需定义一个无参的,和所有参数的即可。需要时在添加

  1. /**
  2. 一个类的代码分布图:
  3.  
  4.     属性 
  5.     构造方法 
  6.     成员方法 
  7.     get方法和set方法
  8. */
  9. publicclassStudent{
  10. /** 姓名 */
  11. privateString name;
  12. /** 年龄 */
  13. privateint age;
  14. publicStudent(){
  15. }
  16. publicStudent(String name,int age){
  17. super();
  18. this.name = name;
  19. this.age = age;
  20. }
  21. /**
  22. * 获取姓名
  23. *
  24. * @return name 姓名
  25. */
  26. publicString getName(){
  27. return name;
  28. }
  29. /**
  30. * 设置姓名
  31. *
  32. * @param name
  33. * 姓名
  34. */
  35. publicvoid setName(String name){
  36. this.name = name;
  37. }
  38. /**
  39. * 获取年龄
  40. *
  41. * @return age 年龄
  42. */
  43. publicint getAge(){
  44. return age;
  45. }
  46. /**
  47. * 设置年龄
  48. *
  49. * @param age
  50. * 年龄
  51. */
  52. publicvoid setAge(int age){
  53. this.age = age;
  54. }
  55. }

测试类

  1. publicclassTest{
  2. publicstaticvoid main(String[] args){
  3. //通过无参构造创建对象,并给成员变量赋值
  4. Student zs =newStudent();
  5. zs.setName("张三");
  6. zs.setAge(13);
  7. //通过有参构造创建对象,并给成员变量赋值
  8. Student ls =newStudent("李四",14);
  9. //调用对象的方法
  10. System.out.println(zs.getName()+"----"+zs.getAge());
  11. System.out.println(ls.getName()+"----"+ls.getAge());
  12. }
  13. }

4、static关键字概述

1、概述

1、static 可以修饰成员变量和成员方法

2、被static修饰的成员有一个最大的特点,就是可以被该类下所有的对象共享

2、什么时候用

多个对象共享某一数据的时候,我们就把这个数据用static修饰

3、特点(掌握)

1、被static修饰的内容随着类的加载而加载,优先于对象存在

2、可以直接通过类名调用

3、被该类下所有对象共享

4、注意事项

1、在静态方法中是没有this关键字,因为静态是随着类的加载而加载。而this是对象创建才存在的

2、静态方法只能访问静态成员变量和静态成员方法 一句话 静态只能访问静态

3、静态内容可以通过对象调用,也可以通过类名调用。推荐使用类名调用

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

1、谈谈构造方法
    从构造方法的特点和作用两方面说即可

2、谈谈默认初始化,显示初始化,构造方法初始化的顺序


3、谈谈给私有的成员变量赋值的方式


5、谈谈你对static的理解
    从特点和注意事项两方面说即可

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

 

 

 

 

来自为知笔记(Wiz)

时间: 2024-10-29 16:11:26

Day07_面向对象第二天的相关文章

面向对象第二天

面向对象的特征? 面向对象的三个基本特征是:封装.继承.多态. 还有一个抽象,某些人认为抽象也很重要便把它也列为面向对象的一种特征,所以有时根据人为不同面向对象可分为四大特征. 封装就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节.其中后面那句是其重点. 这里列举一个继承的例子: <?php/** * Created by PhpStorm. * User: lenovo * Date: 2017/7/13 * Time: 17:13 */ class people {

面向对象第二单元训练总结

一.前言 第二单元的三次作业是很有特点的三次作业.多线程电梯的设计思路和前两次电梯作业迥然不同,导致我花费了大量的时间去重构之前的代码,使其适应多线程电梯的作业要求:文件监视器是一个独立的作业,不像电梯和出租车那样是一个系列,因此写起来没什么包袱,感觉并不困难:出租车调度和多线程电梯写起来感觉比较相似,但出租车几乎没有算法上的难度,因此主要的工作都花费在了如何构建一个好的设计上面.这三次作业之间看起来没有什么关联,但却环环相扣,一步一步加深着我对多线程编程的理解. 我对这三次作业的总体难度评价为

面向对象第二次实验

实验名称:构造函数一.实验目的        通过实验理解构造函数的概念与其特殊应用.二.概要设计        应用VC++6.0的编辑环境构造一个类Triangle,该类主要实现三角形的基本操作,例如初始化(构造函数及构造函数的重载).求三角形的周长.面积.判断该三角形是什么三角形(等边.等腰.直角.等边直角.一般三角形.非三角形).输出(包括"输入数据非法")等,具体说明如下: class Triangle{ public: Triangle(double,double,doub

面向对象第二次作业参考代码

#include <iostream.h> #include <stdlib.h> #include <time.h> int rollDice(void); void main() { enum Status{CONTINUE,WON,LOST}; int sum,myPoint,num = 1; Status gameStatus; srand(time(NULL)); //init only one time sum = rollDice(); //first r

面向对象第二章

一. 继承的优点 优点:提高代码的可重用性 1.   如何判断A.B类之间是继承关系? 符合 is-a关系 2.java中,所有的类都直接或间接的继承了java.lang.Object类 3.   java中,私有的成员和构造方法没有被子类继承 缺省权限的成员,不能被其他包中的子类继承 二.如何实现继承 1.   将多个类中的共同的成员,提取出来放到一个公共的类(父类.超类.基类),自己只保留特有的成员 2.   多个类(子类.派生类),继承(extends) 公共类 访问修饰符class 子类

java面向对象第二章

一. 继承的优点 优点:提高代码的可重用性 1.   如何判断A.B类之间是继承关系? 符合 is-a关系 2.java中,所有的类都直接或间接的继承了java.lang.Object类 3.   java中,私有的成员和构造方法没有被子类继承 缺省权限的成员,不能被其他包中的子类继承 二.如何实现继承 1.   将多个类中的共同的成员,提取出来放到一个公共的类(父类.超类.基类),自己只保留特有的成员 2.   多个类(子类.派生类),继承(extends) 公共类 访问修饰符class 子类

Python笔记总结week8

面向对象第二节 要点: 1. 封装,对象中嵌套对象 2. pickle,load,切记,一定要先导入相关的类 回顾上一节: 面向对象三大特性: 封装.继承.多态(多种类型.多种形态) 关于多态,任意参数的函数有如下特性: def func(arg): print(arg) func(1) func("Alex") func([11,22,33]) 关于arg参数: class A: pass class B(A): pass class C(A): pass #arg参数,必须是A类型

JavaScript学习总结--创建对象(6_其他方法)

前面我们一共介绍了四种方法用来封装对象(工厂,构造模式,原型模式,构造+原型),并且重点对构造函数+原型模式做了一些改进,使之更加完美,那么除了这几种方法, 还有两种方式用来封装对象,还是那句话,选择适合自己的(其实每种方法都各有利弊,在我刚开始学习时总感觉就是拆东墙补西墙). 首先来看第一种方法 function Person(name,age){ var o=new Object(); o.name=name; o.age=age; o.sayName=function(){ console

Czbk Web前端视频教程 前端全套教程 汪磊2015版Web前端视频教程 共12章 包含源码

<Web大前端-北京1期就业班[2015-11-2开课]>├<1.html>│ ├<1017_HTML01>│ │ ├01_基础班介绍.avi│ │ ├02_文件和文件夹管理.avi│ │ ├03_特殊案件和快捷键的使用.avi│ │ ├04_互联网原理.avi│ │ ├05_服务器和http.avi│ │ ├06_服务器的小演示.avi│ │ ├07_认识txt纯文本格式.avi│ │ ├08_HTML是描述文档语义的语言.avi│ │ ├09_HTML语义.avi│