JAVA入门第二季 第一章 类和对象
面向对象编程 Object Oriented Programming OOP
第一、什么是类和对象
在具体说明类和对象之前,先说说别的。
眼睛在人类身体上最为有用的器官。如果一个没有了眼睛,这个人与世界的联系会大大减小。因为人脑主要是通过眼睛来获取数据的;当然也有其它器官获取的哦数据帮助我们更加准确的描述我们所看到的现象。眼睛通过光线作用,把客观物理世界投影到人脑。人脑是由亿万多脑细胞组成。脑细胞神经元有反馈机制,当级联的脑脑细胞神经元多起来后,通过反复的实验和检测,使得大脑得到对客观世界有更准确的描述和解释(人脑能理解的)。
学过机器学人工神经网络理论的人都知道ALVINN系统。ALVINN系统是一个三层网络,有一个巨大的输入层(960个输入神经元). ANN的输入是一个30x32像素的图象,输出是车辆行进的方向。ALVINN系统使用反向传播算法来学习驾驶汽车(上图),它的最高时速达到每小时70英里。神经网络显示在图的左边,输入的摄像机图像在它的下边.左图显示了来自车前摄像机的图像是如何被映射到960个神经网络输入的,这些输入又前馈到4个隐藏单元,再连接到30个输出单元。网络输出编码了推荐的驾驶方向。右图显示了网络中一个隐藏单元的权值。进入这个隐藏单元的30´32个权值显示在大的矩阵中,白色的方框表示正权值而黑色的方框表示负权值。从这个隐藏单元到30个输出单元的权值被画在这个大矩阵上方的较小矩形中。从这些输出权值可以看出,激活这个隐藏单元会促进向左转。 下面是三个图。
第二、如何定义JAVA中的类
分三步走:1)首先定义一个类,要求类名,首字母为大写;具体方法是先建一个工作空间>工程.>包>类
2)在定义该类都什么属性,即成员变量
3)方法(JAVA中的“方法”,其实与C语言中的“函数”相同),说明该类都有什么功能
例如:
public class Telphone(){
String name="世界杯";
static String className="JAVA开发一班";//静态变量的声明和赋值。
//属性(成员变量)有什么
float screen;
float cpu;
float mem;
//方法 干什么
void call{
System.out.println("Telphone 有打电话的功能!");
}
void sendMessage{
System.out.println(“screen”+screen+"cpu"+cpu+"mem"+mem+"Telphone 有发短信的功能!");
}
//无参的构造方法
public Telphone(){
System.out.println("无参构造的构造方法!");
}
//有参的构造方法
public Telphone(float newScreen,float newCpu,float newMem){
screen=newScreen;
cpu=newCpu;
mem=newMem;
System.out.println("无参构造的构造方法!");
}
public static void main(String[] args){
System.out.println(Telphone.className);
//下面的方法是不可以用的。
System.out.println();
}
}
第三、如何使用JAVA中的对象
使用对象的步骤:
1#创建对象
类名 对象名 = new 类名();---假如有Telphone类,则创建对象:
Telphone phone = new Telphone();
这个创建过程是实例化的。对象是存储在内存当中的。
2#使用对象
引用对象的属性:对象名.属性
phone.screen = 5;//给screen属性赋值5
引用对象的方法(函数):对象名.方法();
phone.sendMessage();//调用sendMessage()方法
C语言中(《C Primer Plus》Chapter14.Sructure and Other Doata Forms)中提到 ,将声明结构体视为Template(模板),然后用这个结构体定义个结构体变量,然后对这个变量进行初始化和应用。Java中的“类”的声明和使用方法,我认为与C的结构体使用法相似的,也是先定义个类,然后用这个类新定义一个新类,对这个类,进行操作。
模板类,起到模范、原型的作用。如上面手机类的定义和使用,假如我有两个不同配置的手机,那么,我们新定义的两个手机类其变量值和方法功能可能不尽相同的。
第四、JAVA中的成员变量和局部变量
1)JAVA中的成员变量和局部变量
1、成员变量
在类中定义,用来描述对象将要有什么。
默认时候,其值为零。float 类型变量赋值时,后面加 f。
2、局部变量
在类的方法中定义,在方法中临时保存数据。
2)成员变量和局部变量的区别
a、作用域不同
局部变量的作用域仅限于定义它的方法。
成员变量的作用域在整个类内部都可见的。
通俗讲,作用域就是跟动物领地的概念。非洲狮子群可以袭击斑马、角马等,但反过来斑马、角马一般不会主动惹非洲狮子群。
b、初始值不同
定义成员变量的时候有默认初始值;
定义局部变量的时候没有默认初始值。
c、同一个方法中,不允许有同名局部变量,
不同方法中,可以有相同名局部变量。
d、两类变量同名时,局部变量有具有更高的优先级----就近原则
第五、JAVA中的构造方法
1、构造方法:
a、使用new+构造方法 创造一个新的对象,从而实例化
b、构造方法是定义在Java类中的一个用来初始化对象的方法
为什么要用构造方法来初始化对象?
类中定义的变量和方法太多,以致一个个拷贝和赋值变量和方法变得繁琐且容易出错。
如果我们把这个繁琐且容易出错的初始化过程,让电脑自动完成,节省了程序员的脑力,提高编写程序的准确性和快速实现能力。
c、因此,目前为止,一个类包括有:变量、构造方法、方法、
构造方法,从名称就可以看出是一种方法,是特殊的方法,专门用来实现初始化类用的。
2、构造方法与类同名且没有返回值
构造方法要在类中包含。
3、无参构造方法
4、有参构造方法
有参和无参构造方法可以并存的。
5、但没有指定构造方法时,系统会自动添加无参的构造方法。
这个特征也是为了,节约成本,自动化”生产线“。
6、当有指定构造方法时,无论是有参、无参的构造方法,都不会自动添加无参的构造方法
7、构造方法的重载:方法名相同,当参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法
其实一个类同时有无参的构造方法和有参的构造方法,其实就是方法的重载。
问题:方法的重载,有什么作用?
提供多种选择,
8、构造方法不但可以给对象的属性赋值,还可以保证给对象的属性赋一个合理的值
如何实现呢?有参构造方法内,加入条件判断,从而解决传值不正确的问题。
第六、JAVA中的static 使用之静态变量
“大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。然而在某些时候,我们更希望该类所有的对象共享 同一个成员。此时就是 static 大显身手的时候了!!
Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可以使用直接
访问,也可以使用对象名进行访问。当然,鉴于他作用的特殊性更推荐用类名访问~~
使用 static 可以修饰变量、方法和代码块。”
1、静态变量及使用方法
公有静态变量的使用方法:public static String className="JAVA开发一班";
私有静态变量的使用方法:private static String className="JAVA开发一班";
推荐类名访问,所以,利用上面的代码段的定义,可以这样调用静态变量:System.out.println(Telphone.className);
2、静态方法、静态类
与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。
a、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后
通过对象来访问非静态变量.如下:
pbulic class HelloWorld{
String name="世界杯";
static String hobby="worldcup";
}
public static void print(){
//创建类的对象
HelloWorld hello=new HelloWorld();
//通过推向来实现在静态方法中 调用 非静态变量
System.out.println("喜欢"+hello.name+"!");//非静态
System.out.println("I love "+hobby+" !");//静态
}
b、 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。
public void show(){
System.out.println("喜欢"+name+"!");//非静态
System.out.println("I love "+hobby+" !");//静态
}
c、 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
public void show(){
System.out.println(我爱世界杯!");
}
public static void print(){
System.out.println(2016世界杯!");
}
public static void main(String[] args){
//普通成员方法必须通过对象来调用
HelloWorld hello=new HelloWorl();
hello.show();
//可以直接调用静态方法
print();
}
第七、静态初始化块
在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。
需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
程序清单:
public class HelloWorld{
int num1;
int num2;
static int num3;
public HelloWorld(){ //构造方法
num1=91;
System.out.println("通过构造方法为变量num1赋值");
}
{//初始化块
num2=74;
System.out.println("通过初始化块为变量num1赋值");
}
{//静态初始化块
num3=83;
System.out.println("通过静态初始化块为变量num1赋值");
}
public static void main(String[] args){
HelloWorld hello=new HelloWorld();
System.out.println("num1:" + hello.num1);
System.out.println("num2:" + hello.num2);
System.out.println("num3:" + num3);
HelloWorld hello2=new HelloWorld();
}
}
通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块。
学习视频来源:www.imooc.com
JAVA入门第二季 第一章 类和对象的更多相关文章
- Java入门第二季第一章类和对象知识点
Java 中的 static 使用之静态方法 1. 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员.如: 如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问 ...
- JAVA入门第二季(mooc-笔记)
相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第二季&g ...
- Java入门第二季学习总结
课程总概 该门课程作为java入门学习的第二季,是在有一定的java基础上进行的进一步学习.由于该季涉及到了java的一些核心内容,所以相对第一季来说,课程难度有所提升.大致可将该季的课程分为五部分: ...
- java 入门 第二季1
(1). 类和对象(java 语言是面向对象的) 1). 类是对象的类型 具有相同的属性和方法的一组对象的集合 类:属性和方法 定义类: 类名 属性 方法 //class为关键字 2.定义类时,首字母 ...
- 《Java入门第二季》第一章 类和对象
什么是类和对象 如何定义 Java 中的类 如何使用 Java 中的对象 Java中的成员变量和局部变量1.成员变量:在类中定义,描述构成对象的组件. 2.局部变量:在类的方法中,用于临时保存数据. ...
- 《Java入门第二季》第四章 多态
Java 中的多态1.引用的多态:意思就是父类的句柄既可以持有本类的对象,也可以持有子类的对象. 2.方法的多态:注意点是当父类句柄持有子类对象的时候,无法调用子类特有的方法. 多态中的引用类型转换1 ...
- Java入门 第二季第三章 继承
这是我学习慕课网Java课程的笔记,原视频链接为:http://www.imooc.com/learn/124 3-1 Java 中的继承 ★ 概念:继承是类与类的一种关系,是一种 "is ...
- java 入门 第二季4
1. 多态 继承是多态的实现基础 引用的多态 父类的引用可以指向本类的对象 父类的引用可以指向子类的对象 方法的多态 创建本类对象时,调用本类方法 2种是调用子类的方法或继承的方法 子类中添加独有的方 ...
- 慕课笔记-Java入门第二季
1.java对象的使用 (1)创建对象 类名 对象名=new 类名(); (2)使用对象 引用对象的属性:对象名.属性; 引用对象的方法:对象名.方法(); Note: ①Java会给成员变量赋初始值 ...
随机推荐
- VPN连接错误800的解决办法
1,IP填错.2,防火墙太严.3,使用过别的VPN软件.4,服务器上服务里Protected Sqwerrage和Routing and Remote Access这两项是否启动.5,重启电脑,删除原 ...
- 深入浅出设计模式——工厂方法模式(Factory Method)
介绍在简单工厂模式中,我们提到,工厂方法模式是简单工厂模式的一个延伸,它属于Gof23中设计模式的创建型设计模式.它解决的仍然是软件设计中与创建对象有关的问题.它可以更好的处理客户的需求变化. 引入我 ...
- union (共用声明和共用一变量定义)
"联合"是一种特殊的类,也是一种构造类型的数据结构.在一个"联合"内可以定义多种不同的数据类型, 一个被说明为该"联合"类型的变量中,允许装 ...
- Delphi 使用之连接数据库
DELPHI 中的数据库开发有很多种类的,可以连接Access数据库.MS SQL Server 数据库.Oracle 数据库.MySQL数据库等等,一般连接有两种方式:BDE和ADO两种方式, 都是 ...
- DEELX 正则表达式引擎(v1.2)
DEELX 正则表达式引擎(v1.2) 简介见文末. 选择使用deelx的理由:全部代码位于一个头文件(.h)中, 比任何引擎都使用简单和方便. 利用分组从字符串当中提取出化学元素英文名.比如 Ag, ...
- (Python)导出指定文件夹中as文件的完全限定类名
AS3程序在编译的过程中,有一个特点是这样的,不管是项目中的类,还是标准库或者第三方库的类,编译的时候只会把用到的那些类文件编译进去,也就是说,某一些类,只要没有被主程序引用到,那这个文件是不会被编译 ...
- Question and Answer
1.VS2013使用EntityFrame问题解决办法 解决办法参照博客http://pinter.org/?p=2374 使用到EntityFrame的项目配置文件修改如下: 项目中凡是使用到DbC ...
- WCF初探-19:WCF消息协定
WCF消息协定概述 在生成 WCF应用程序时,开发人员通常会密切关注数据结构和序列化问题,而不必关心携带数据的消息结构. 对于这些应用程序,为参数或返回值创建数据协定的过程很简单.但是,有时完全控制 ...
- iOS开发拓展篇—音频处理(音乐播放器6)
iOS开发拓展篇—音频处理(音乐播放器6) 一.图片处理 说明: Aspect表示按照原来的宽高比进行缩放. Aspectfit表示按照原来的宽高比缩放,要求看到全部图片,后果是不能完全覆盖窗口,会留 ...
- pod template
Pod::Spec.new do |s| s.name = "MLAlipaySDK" s.version = "2.1" s.summary = " ...