------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
面向对象的思维方式:按照生活中的思维方式来编程。
1、首先确定谁来做,然后确定怎么做。
例子:如中午不想下楼吃饭 ,叫同学帮忙打饭。
2、首先考虑整体,再考虑局部。
例子: 用面向对象的思维方式构造一部电梯。则先考虑整体:这部电梯应该具有上、下、开门、关门、载重量等功能。其次才考虑局部,由什么零部件组成。
3、首先考虑抽象,再考虑具体。
例子:党告诉我们要为人民服务,单到底是如何为人民服务,就是具体的东西。
越是抽象的东西越不容易错。
面向对象设计的最终目标:消除重复代码。
消除重复代码需要遵守:1、依赖注释原则。2、开发封闭原则。
class 类名{ 属性;//属性也叫成员变量,主要用于描述类的状态 方法;//方法也叫成员函数(方法),主要用于描述类的行为 } }
类名 对象名 = new 类名(); 其中,类名()为构造函数<br>如:已存在Dog类. /** **类是抽象的概念,对象是比较具体的概念 ***/ /** **生成Dog的对象,new Dog()就是Dog的对象,而dog仅仅是引用,代表了Dog这个对象,即是这个对象的名字。 ** Dog dog就是创建了一个引用,名字为dog,dog指向了一个Dog的具体的对象。 ***/ Dog dog = new Dog();
使用对象调用变量(属性)和函数(行为):
1、对象.变量; 2、对象.函数();
例子:
Dog.java:
public class Dog { String name; String color; String age;/**<br> 具有引用的对象的方法 <br>*/ <br> void jump()<br> System.out.println ("会跳"); }; }
DogTest.java
public class DogTest { public static void main (String[] args) { Dog dog = new Dog(); dog.name = "旺财"; dog.color = "黑色"; dog.age = "两岁"; System.out.print (dog.age+"的"+dog.color+dog.name); dog.jump(); }
输出:两岁的黑色旺财会跳
一个类可以有很多的对象,每个对象可以有多种方法。
如上例中,可实例化多个Dog对象:
Dog dog2 = new Dog(); Dog dog3 = new Dog(); <br><br>new构造函数。<br>
可以不定义对象的应用名称,而直接调用这个对象的方法。这样的对象叫匿名对象。
如:
new Dog().jump();
匿名对象通常都是一次性用品,用完之后就丢,再也找不到。
函数的重载:在一个类中,允许函数重名,但是参数列表不同。
如下例代码:
suuu.java:
public class suuu { void fun(){ System.out.println ("无参数的fun函数"); } void fun(int i){ System.out.println ("有参数的fun函数"); } }
suuuTest.java:
public class suuuTest { public static void main (String[] args) { suuu suuu1 = new suuu(); suuu1.fun(); } }
输出:无参数的fun函数
解析:由于suuu.fun()没有参数,所以调用的是无参数的fun函数。若想输出为“有参数的fun函数”,则在fun函数中加入整形值即可,如suuu1.fun(5);.
意义: 因为函数名相同,说明行为相同,但是参数列表不同,说明目标不同。
使用对象来调用fun函数时,根据所传入的参数不同,编译器则调用不同的fun函数。
构造函数:如Dog dog = new Dog()中,new Dog()就是构造函数。
构造函数没有返回值类型的定义。
构造函数的名字必须和类名相同。
构造函数可以是有参的,也可以是无参的。
看下面例子:
Dog.java:
public class Dog { Dog() { //无参构造函数 } Dog(String a,int b){ //有参构造函数 name = a; age = b; } String name; int age; }
DogTest.java:
public class DogTest { public static void main (String[] args) { Dog dog1 = new Dog("旺财",3); Dog dog2 = new Dog("来福",2); System.out.println (dog1.name+dog1.age+"岁了"); System.out.println (dog2.name+dog2.age+"岁了"); } }
输出:旺财3岁了
来福2岁了
PS.无参构造函数系统可以自动生成,但是有参的构造函数系统不会生成。