十二、面向对象基础(一)
1.什么是面向对象
一种编程方法,一种思维方式。
2.应该如何学习面向对象
1)掌握一门面向对象语言的语法。 2)掌握面向对象的思维方式。 3)熟悉面向对象设计原则(面向对象总体目标:消除重复代码)。 4)掌握面向对象涉及模式。
3.面向对象的思维方式
1)首先确定谁来做,其次确定怎么做; 2)首先考虑整体,其次考虑局部; 3)首相考虑抽象,其次考虑具体。
要习惯于将面向对象与现实世界做比较。
面向对象的终极目标就是,消除重复代码。
十三、面向对象基础(二)
1.创建类的方法
定义类的方法
class 类名 //类型最好用英文单词
{
属性; //也叫成员变量,主要用于描述类的状态
方法; //也叫成员函数/方法,主要用于描述类的行为
}
类的表示方法
类的定义方法
class Person
{
int age ;
void shout(){
System.out.println("oh,my god! I am" + age);
}
}
2.创建对象的方法
格式:类名 对象名 = new 类名();
例如:Dog d = new Dog(); //d为对象名,也叫引用;引用存放在栈内存里;对象本体存放在堆内存里。
创建对象过程:创建一个Dog的引用存在栈内存中,创建一个Dog的对象堆内存中,用赋值号将创建的Dog对象赋给这个引用。
类和对象的关系:类是抽象的概念。对象是具体的个体。
3.对象和对象的引用
十四、面向对象基础(三)
1.对象的使用方法;
使用对象调用变量和函数:
1.对象.变量
2.对象.函数()
例子:创建一个Dog类:
class Dog{
String name;
int age;
String color;
void jump(){
System.out.println("jump!");
}
}
创建一个Test类,创建一个新的对象并调用变量和函数
class Test{
public static void main(String[] args){
Dog d = new Dog();
d.name = "wangcai";
d.age = 2;
d.color = "white";
d.jump();
System.out.println("the dog's name is"+d.name);
}
}
先编译Dog.java,再编译Test.java,然后运行Test(java函数从主函数开始运行。)
2.多对象的创建方法;
Dog d1 = new Dog();
Dog d2 = new Dog();
每个对象有自己的属性和方法,互相不影响。
3.匿名对象的创建和使用方法;
匿名对象的使用:可以不定义对象的引用名称,直接调用这个对象的方法。这样的对象叫做匿名对象,如
new Dog().jump(); //匿名对象通常是一次性使用的。若出现两次,则指的是两个不同的匿名对象。
十五、面向对象基础(四)
1.函数的重载 //在一个类中,允许函数的重名。
函数重载时,函数名可以一样,但是参数列表不能相同。
函数重载的定义:1)在同一个类中; 2)有相同的函数名; 3)有不同的函数列表。
例:
class A {
void funA(){
System.out.println("没有参数的funA函数");
}
void funA(int i){
System.out.println("有一个整型参数的funA函数");
}
}
调用函数
class Test{
public static void main (String[] args){
A.a = new A();
a.funA();
a.funA(10);
}
}
2.构造函数的作用 //Dog()就是构造函数。
构造函数的语法特征: 1)构造函数的函数名必须和类名一模一样。 2)构造函数没有返回值的定义 3)使用new来调用构造函数; 4)如果你的类里面没有构造函数,编译器会自动加上一个参数为空、函数体为空的构造函数; 5)如果类里面已经有构造函数,编译器则不在添加方法体为空的构造函数;
构造函数的作用:1)用new来执行构造函数的时候,会生成一个这个类的对象; 2)使用有参数的构造对象,可以简化为对象赋初始值的代码。
有参数的构造函数的使用方法:
class Dog{
Dog(String a, int b){
name = a;
age = b;
}
String name;
int age;
}
class Test{
public static void main (String[] args){
Dog d1 = new Dog("wangcai",2);
Dog d2 = new Dog("sixi",3);
System.out.println("dog d1's name is"+d1.name+",age is"+d1.age);
System.out.println("dog d2's name is"+d2.name+",age is"+d2.age);
}
}