第一章:面向对象知识点梳理
第一部分:类和对象的创建
谈及面向对象就离不开类的概念,面向对象的内容不仅仅体现在类和对象上面,还有类和对象的概念以及方法的定义和使用。
类的定义的语法
[修饰符] class 类名{ 构造方法的定义;//可以定义0-N个 属性;//可以定义0-N个 方法;//可以定义0-N个}
注释:一般访问修饰符我们使用public代表项目中任何地方都可以使用它,class关键字是用来定义类的关键字,一定记得全小写,类名要遵守帕斯卡命名法,属性就是这类事物的共同特征一般用于存储特殊数据,方法就是他们的共同行为,代表能够执行的功能。
下面我们来看看定义类以及如何使用类创建对象
package com.test1;
public class Hero {
String name;//名字
int age;//年龄
String sex;//性别
//方法
public void run(int speed) {
System.out.println(speed+"m/s的速度狂奔");
}
}
package com.test1;
public class Mytest1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建类的对象才能使用它
Hero hero1=new Hero();
hero1.name="黑暗游侠";
hero1.age=18;
hero1.sex="女";
System.out.println("英雄的名字是"+hero1.name);
System.out.println("英雄的年龄是"+hero1.age);
System.out.println("英雄的性别是"+hero1.sex);
//调用英雄的方法
hero1.run(200);
//再创建一个对象
Hero hero2=new Hero();
hero2.name="剑圣";
hero2.age=20;
hero2.sex="男";
System.out.println("2号英雄的名字是"+hero2.name);
System.out.println("2号英雄的年龄是"+hero2.age);
System.out.println("2号英雄的性别是"+hero2.sex);
hero2.run(100);
}
}
笔记:首先在mian方法中我们要去定义创建对象
对象的创建:使用类名 对象名=new 类名();
创建完类就相当于定义了一个模板,当然模板是不能直接使用的,我们需要通过类创建对象,对象就是通过类产生的实例,并且每个实例都是唯一、互不影响的,对象也就相当于是用来表示现实生活中实际存在且能够使用的独立个体,每使用new关键字,就会产生一个新的对象,而对象名就代表该对象的一个引用名,对象里面可以存储很多的属性数据,也可以拥有很多可以调用执行的方法,当然使用的时候记得加“.”操作符。
第二部分:类中的方法及值传递
方法是用来描述类的行为的,也就是能够做的事情,比如我们人类就能够吃饭睡觉学习等等,这些都是我们能够做的事情,那么在类中如何表示能做的事情呢。
方法定义的语法如下:
访问修饰符 返回值类型 方法名(参数列表){
方法体}
关于这个定义语法的理解:
(1)访问修饰符我们暂时都使用public,代表任何地方都能使用。(2)返回值类型根据需求来设定,如果没有值需要返回给方法的调用者,则写void空的;如果有则需要写具体的返回类型。类型可以是值类型,也可以是引用类型。(3)方法名为驼峰命名法,首字母小写,后面的单词首字母大写。(4)参数列表是方法执行时外界传入的数据,可以写也可以不写,视方法功能情况而定,编写时为参数类型空格参数名,如果多个参数则使用逗号隔开。(5)方法体是由多行代码组成,如果返回值为void则无需使用return关键字,如果非void则需要使用return关键字,完成方法返回值类型声明对应的具体值。
下面我们来看看类中的方法如何定义:
package com.test1;
public class Hero {
String name;//名字
int age;//年龄
String sex;//性别
//方法
public void run(int speed) {
System.out.println(speed+"m/s的速度狂奔");
}
//方法
public void battle() {
System.out.println(this.name+"在肆无忌惮的战斗,他的年龄只有"+this.age+"可他的血量只有1%了");
}
//方法
public void change(int num) {
num+=50;
System.out.println("num的结果是:"+num);
}
}
package com.test1;
public class Mytest1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Hero hero1=new Hero();
hero1.name="剑圣";
hero1.age=20;
hero1.battle();
hero1.run(300);
int number=10;
//值传递方式
hero1.change(number);
System.out.println(number);
}
}
第三部分:可变参数的使用
有些时候,我定义一个方法参数有时候需要接收1个值,有时候又不需要值,甚至有的时候需要几个值,那我们该如何去定义呢,在JDK1.5以后Java允许可变的参数来满足这种特殊场合,就是允许为方法指定数量不太确定的形参,形参在定义的时候在类型后使用“…”三个点进行声明,并且只能放在参数列表的最后一个,防止和前面的非可变参数冲突。
下面我们一起来看看如何定义可变的参数以及如何调用:
package com.test1;
public class Hero {
String name;//名字
int age;//年龄
String sex;//性别
//方法
public void run(int speed) {
System.out.println(speed+"m/s的速度狂奔");
}
//方法
public void battle() {
System.out.println(this.name+"在肆无忌惮的战斗,他的年龄只有"+this.age+"可他的血量只有1%了");
}
//方法
public void change(int num) {
num+=50;
System.out.println("num的结果是:"+num);
}
//方法
public void test(String...strs) {
for (String string : strs) {
System.out.println(string);
}
}
}
package com.test1;
public class Mytest1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Hero h1=new Hero();
h1.test();//没有传递参数也不报错
h1.test("张三","李四");
}
}
第四部分:类中的构造方法
构造方法主要是用来完成对象的一些数据初始化工作。
构造方法的语法如下:
public 类名(){
构造方法体;
}
下面来看一下构造方法:
package com.test1;
public class Hero {
String name;//名字
int age;//年龄
String sex;//性别
//方法
public void run(int speed) {
System.out.println(speed+"m/s的速度狂奔");
}
//方法
public void battle() {
System.out.println(this.name+"在肆无忌惮的战斗,他的年龄只有"+this.age+"可他的血量只有1%了");
}
//方法
public void change(int num) {
num+=50;
System.out.println("num的结果是:"+num);
}
//方法
public void test(String...strs) {
for (String string : strs) {
System.out.println(string);
}
}
//无参构造方法
public Hero() {
// TODO Auto-generated constructor stub
System.out.println("无参构造方法");
}
public Hero(String name,int age,String sex) {
this.age=age;
this.name=name;
this.sex=sex;
System.out.println("有参构造方法");
}
}
package com.test1;
public class Mytest1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Hero h1=new Hero("张三",20,"男");
System.out.println("姓名是:"+h1.name);
System.out.println("姓名是:"+h1.age);
System.out.println("姓名是:"+h1.sex);
}
}
在这里需要注意的是:一个类中可以编写多个构造方法,但是参数不能相同。