疯狂java学习笔记之面向对象-定义类、方法、构造器

Java面向对象

  1、定义类

  2、创建对象、调用方法

类和对象:

某一类对象的概念定义。

比如:人类 - 抽象出来的概念(不特指某个人)

对象 - 在类的概念下产生的一个实例,它就是一个对象了.

  java程序中,类是最小的程序单位 - 所有的java程序都必须从定义类开始

定义类的语法格式

[修饰符]  class  类名{

//0 ~ N 个 Field 定义

//0 ~ N 个 方法定义

//0 ~ N个 构造器定义

}

一个类中最多只能出现五种成分:Field、方法、构造器

一个类最常见的成分为:Field、方法和构造器

[修饰符] :可以省略,可以是public|final|abstract. 只有三个或省略

类名      :自定义填空,从语法角度讲只要是标识符就可以

规定约束:类名由一个或多个有意义的单词组合而成(每个单词首字母要大写),通过类名就能知道该类是做什么的

定义Field的语法格式

[修饰符]  类型  Field名 [ = 默认值];

[修饰符]      : 可以省略,还可以是public|protected|private,static,final .transient - 序列化用到

类型           : 不能省略,可以是基本类型、数组、任意类(JDK类、自定义类、接口、枚举)

Field名        :不能省略, 规定约束:类名由一个或多个有意义的单词组合而成(第一个单词首字母要小写,后面单词首字母大写)。

[ = 默认值]  : 可以省略,默认值必须与它声明的类型是一致的(java是强类型语言)

定义方法的语法格式:

[修饰符]  返回值类型  方法名([0~N个形参声明]){

//0 ~ N 可执行性语句

//如果方法签名中有返回值类型声明,该方法必须包含有效的return语句

}

[修饰符]    : 可以省略,可以是public|protected|private,static,final,abstract(抽象),abstract和final不能同时出现

返回值类型 : 不能省略,可以是基本类型、数组、void(声明该方法没有返回值)、任意类(JDK类、自定义类、接口、枚举)

方法名      : 不能省略, 规定约束:类名由一个或多个有意义的单词组合而成(第一个单词首字母要小写,后面单词首字母大写),通过方法名就能知道该方法是做什么的 - 应该是动词

形参声明   :每个形参声明都满足:"类型 变量"的格式,多个形参声明之间用","隔开

方法体      : 方法体中的代码必须是可执行性的代码,代码的执行是从上到下的

定义构造器的语法格式:

[修饰符]  构造器名(0 ~ N个形参声明) {

//0 ~ N 可执行性语句

}

[修饰符] : 可省略,可以是public|protected|private

构造器名 :不能省略,必须与类名相同

形参声明 : 每个形参声明都满足:"类型 变量"的格式,多个形参声明之间用","隔开

构造器执行体 : 执行体必须是可执行性的代码,代码的执行是从上到下的

构造器的作用:

构造器可以认为是一种特殊的方法,但构造器的作用是用来产生对象的。

通俗来将:但我们定义一个类之后,就需要通过构造器来获取当前类的实例。

注意点:如果程序没有为类提供任何构造器,系统会为类提供一个无参数的构造器

局部变量:方法里的局部变量、形参、代码块的局部变量

局部变量前面只能有的修饰符:final

局部变量必须由程序员来赋初始值

实例:

public class Apple{

//Field定义:[修饰符] 类型 Field名 [ = 默认值];
private int age;
protected String name;
protected static String[] subs;
double weight = 23.3;
int grade;
//grade = 2;//类中只有五种成分,它不是Field、也不是方法、构造器,所以是错的

/*
  [修饰符] 返回值类型 方法名([多个形参声明]){
    0 ~ N 可执行性语句
    如果方法签名中有返回值类型声明,该方法必须包含有效的return语句
  }
*/

String sayHello(String name){

//赋值语句属于执行性语句,可放在方法里边

//返回值类型为String,所以必须包含有效的return语句

grade = 2;
return name + ",Hello";
/*

  编译时,if里的只是一个boolean型表达式
  系统认为if里的return语句有可能不被执行,因此该return不算有效
  除非再加上else return才能算有效,
  保证在编译阶段至少要有一条语句能真正的执行才算有效的return语句
  if(true){
    return name + ",Hello";
  }
*/

}

}

public class TestApple {
  public static void main(String[] args){
    //apple是定义在方法内的一个局部变量
    Apple apple;
    //使用局部变量前必须先赋初始值
    //System.out.println(apple);
    //new后面带的是一个构造器,创建一个TestApple对象
    //并让apple引用变量指向TestApple对象
    //TestApple对象存放在堆里的
    //apple是在main方法中定义的,所以apple引用变量是保存在main方法栈中
    apple = new Apple();
    //要调用方法就一定要满足对方的要求(形参)
    System.out.println(apple.sayHello("金山城"));
    //直接打印对象,输出的必然是"类名@hashcode值"
    System.out.println(apple);
  }
}

时间: 2024-08-02 02:47:40

疯狂java学习笔记之面向对象-定义类、方法、构造器的相关文章

疯狂java学习笔记之面向对象(八) - static和final

一.static: 1.static是一个标识符: - 有static修饰的成员表明该成员是属于类的; - 没有static修饰的成员表明该成员是属于实例/对象的. 2.static修饰的成员(Field.方法.初始化块),与类共存亡:static修饰的成员建议总是通过类名来访问,虽然它也可以通过实例来访问(实质也是通过类来访问的),所以平时若在其他程序中见到通过实例/对象来访问static成员时,可以直接将实例/对象 替换成类名: 3.程序都是先有类再有对象的,有可能出现有类但没有实例/对象的

疯狂java学习笔记之面向对象(四) - this关键字

Java中this关键字主要有以下两个方法: 1.this引用 - 可用于任何非static修饰的方法和构造器中,当this用于方法中时,它代表调用该方法的实例/对象;当this用于构造器中时,它代表构造器正在初始化的实例/对象 2.this调用 - 只能在构造器的第一行出现. 如何区分this引用与this调用呢? this引用写法为:this.  ;  而this调用写法为:this(); 例1: 1 class TestThis{ 2 private double weight; 3 pr

疯狂java学习笔记之面向对象(六) - 构造器重载、方法重载和方法重写

一.方法重载(Overload): Java允许同一个类中定义多个同名方法,只要形参不一样就可以,如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,则被成为方法重载(两同一异). 同时这这里我们需要注意以下两点:  A.方法重载与返回值类型没有任何关系;  B.方法重载与是否有static修饰没有任何关系. 那我们如何才能确定到底调用的哪个方法呢?  A.主调者:明确是谁在调用这个方法,是类还是对象  B.方法名和形参:确定调用哪个方法(由方法名和形参共同决定) 例1: 1 p

疯狂java学习笔记之面向对象(三) - 方法所属性和值传递

方法的所属性: 从语法的角度来看:方法必须定义在类中 方法要么属于类本身(static修饰),要么属于实例 -- 到底是属于类还是属于对象? 有无static修饰 调用方法时:必须有主调对象(主语,调用者) 1 public class MathTest{ 2 public static void main(String[] args){ 3 System.out.println(Math.sin(1.57)); 4 System.out.println(Math.sin(Math.PI/2))

疯狂java学习笔记之面向对象 - 成员变量与局部变量

Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的特点: 没有创建实例前是不会分配内存空间的: 从有实例开始,实例变量就存在了: 实例被销毁,实例变量就不存在了: 0~N个实例变量,程序每创建一个实例,系统就为该实例分配一块内存 类变量的特点: 从有类开始,类变量就存在了,一个JVM中类信息只要一个即可. 每个JVM最多只加载一个类一次,系统就为该

疯狂java学习笔记之面向对象(七) - super关键字

super有以下两大作用: 1.起限定作用:强制去访问父类的成员(Field.方法) 2.起调用作用:指定/显示调用父类的某个构造器 super调用规则: 1.子类构造器总会调用父类构造器一次,默认情况下子类构造器会自动调用父类无参数的构造器; 2.若希望明确指定子类构造器调用父类哪个构造器,可以用super(参数,参数,....),到底调用哪个父类构造器取决于super后面传入的形参列表; 3.this()调用与super()调用都必须出现在构造器的第一行,所以他们两个调用时不能同时出现的.

Java学习笔记<3>面向对象相关

面向对象的基本思想 从现实世界客观存在的事务出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式,如抽象.分类 继承.聚合.多态等. 类和对象的关系 对象中存储了类规定的数据类型,并且对象可以调用类的方法. java面向对象 <1>对象是java程序的核心,一切皆对象. <2>对象可以看成静态属性(成员变量)和动态属性(方法)的封装体. <3>类是创新同一类型对象的模版,定义了该类型对象应具有的成员变量及方法. 类的定义 成员变量可以用java语言的任何一种

java学习笔记之面向对象static,final关键字

java学习笔记之面向对象static,final关键字 一.static关键字 1.概述: static静态的,被static修饰的成员属于类,不属于单个对象,被所有对象所共享,存在静态区中,静态的成员优先于对象加载到内存中. 2.statc修饰成员的使用方式:(被static修饰的成员变量有默认值) /* 1.可以通过对象直接使用,不推荐使用 2.通过类名调用静态成员 类名.静态成员变量 类名.静态成员方法 */ 3.static的特点 /* 1.在同一个类中,静态成员只能访问静态成员,非静

javascript学习笔记---ECMAScriptECMAScript 对象----定义类或对象

使用预定义对象只是面向对象语言的能力的一部分,它真正强大之处在于能够创建自己专用的类和对象. ECMAScript 拥有很多创建对象或类的方法. 原始的方式 因为对象的属性可以在对象创建后动态定义(后绑定),类似下面的代码: var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };不过这里有一