3.首先考虑抽象,其次考虑具体。
面向对象的基础(2)
主要内容:
1.创建类的方法
2.创建对象的方法
3.对象和对象的引用
定义类的方法:
class 类名
{
属性
方法
}
属性:也叫成员变量,主要用于描述类的状态。
方法:也叫成员方法,主要用于描述类的行为。
类的表示方法:
类的定义方法:
class persion{//类名
int age;//成员变量
void shout(){//成员函数
System.out.println("***");
}
}
生成对象的方法:
格式:
类名 对象名 = new 类名();//数据类型属于引用数据类型
如上图所示,JVM在使用的时候将内存分成了两个部分,一个是栈内存,一个是堆内存。栈内存中存放的是对象的名字(也就是引用)。引用表示这个名字代表一个对象实体,堆内存中存放的是对象的实体。
下图形象的表示了这一过程:
这是d不是对象,它代表对象(只是个引用)。比如张三这个名字不是一个人,只是这个名字代表了一个人的含义是相同的。
类和对象的关系:
类是抽象的,对象是具体的。
面向对象基础(3)
主要内容:
1.对象的使用方法
2.多对象的创建方法
3.匿名对象的创建和使用方法
对象的使用方法:
使用对象调用变量和方法:
1.对象名字.变量
2.对象名字.方法函数
创建类:
class Dog{
String name;
int age;
String color;
void jump{
System.out.println("Jump");
}
}
class Test{
public static void main(String args[]){
Dog d1 = new Dog();
Dog d2 = new Dog();
d1.name = "旺财";
d2.name = "四喜";
d1.age = 2;
d1.color = "黑色";
d.jump();
System.out.println("名字是 "+d.name);
}
}
生成多个对象的额情况
匿名对象的使用
可以不定义对象的引用名称,而直接调用这个对象的方法。这样的对象叫做匿名对象。它是一次性的对象,用过后,就再也找不到了,如:
new Dog().jump();
class Test{
public static void main(String args[]){
new Dog().jump();
new Dog().jump();
//这两个Dog是不同的对象。是在堆内存中生成了两个Dog对象
}
}
面向对象基础(4)
主要内容:
1.函数的重载重载的定义:
1.两个或者多个函数在同一个类当中
2.函数名相同
3.参数列表不同。
例子:
class A{
void funA(){
System.out.println("没有参数的funA函数");
}
void funA(int i){
System.out.println("使用了带整型参数的funA函数");
}
void funA(int a,double b){
System.out.println("使用了带两个参数的funA函数");
}
}
创建了一个类文件,内容如上所示。有三个funA,但是这三个funA的参数列表不同。这三个funA就是所谓的重载函数。
主函数:
class Test1{
public static void main(String args[]){
A a = new A();
a.funA();
a.funA(10);
a.funA(10,10.5);
}
}
分别调用不同的重载函数,输出的结果也是不同的。
构造函数:
一个构造函数由:类名+括号组成,这个括号中可以有参数。
注意:new 后面加的就是一个构造函数。如果没有写构造函数,编译器在自动加一个无参数,且方法为空的构造函数。假如已经添加了有参的构造函数,编译器就不会自动添加无参的构造函数了。
class A{
A(){
System.out.println("我是无参的构造函数");
}
A(int i){
System.out.println("我是有参的构造函数");
}
}
主函数:
class Test1{
public static void main(String args[]){
A a = new A();
A b = new A(10);
}
}
构造函数的作用:在生成一个对象的时候可以对这个对象进行一系列的初始化工作。使得初始化变得简洁。