类与对象

来源:互联网 发布:在淘宝开网店流程 编辑:程序博客网 时间:2024/04/28 21:10

1.面对对象的语言有三个特性 封装 继承  多态。

2.抽象的关键是抓住事物的属性和行为,其目的是从具体的实例中共有属性和行为形成数据类型。

3.类    java中的基本要素 封装一类对象的属性和行为 ,用来产生对象的一种数据类型。

4.类名的首字母要大写,class Vehicle{}是类声明。

5.类体 其内容有两部分构成  一是变量的声明用来刻画属性 另外是方法的定义用来刻画行为。

6.成员变量   类型  有效范围(在整个类内都有效其有效性尤其在类体中书写的先后位置无关)。

6.1 局部变量只在声明它的方法内有效。

7.使用成员中隐藏的变量,必须是懂得使用关键字。

7.1 注意的问题 

                        可以这样做

 class A {   int a=12;   float b=12.56f;}
                    但不可以这样

    class A {
   int a;
   float b;
   a=12;(非法这是赋值语句(语句不是变量的声明,只能出现在方法体中))
   b=12.56f;


}

8.UML类图。

9.对象的声明    (类的名字 对象名字)  Vehicle  car,创建对象 为声明的对象分配变量

9.1 用new运算符为声明的对象分配变量

10.创建多个不同的对象改变其中一个对象的变量不影响其他对象的变量。

11.对象的使用 对象.变量 对象.方法  垃圾收集

12.有关值的传递,

                      引用类参数的传值相当于在C中函数的不断传递      重点复习,不易理解。

public class Example4_5 {public static void main(String[] args) {// TODO Auto-generated method stub      TV hairTV=new TV();//声明个TV变量      hairTV.setChannel(5);//挑选个频道      System.out.println("目前频道"+hairTV.getChannel());//输出目前状态      Chinese zhangsan=new Chinese();//重新定义变量      zhangsan.buyTV(hairTV);//将hairTV的引用传递给zhangsan      System.out.println("zhangsan开始看电视节目");      zhangsan.seeTV();      int m=2;      System.out.println("改到"+m+"频道");      zhangsan.remoteControl(m);//该频道      System.out.println(hairTV.getChannel());      zhangsan.seeTV();}}

public class TV {int channel;void setChannel(int m){if(m>1){channel=m;}}int getChannel(){return channel;}void shoeProgram() {switch(channel){case 1:System.out.println("综合频道");break;case 2:System.out.println("综合频道1");break;case 3:System.out.println("综合频道2");break;case 4:System.out.println("综合频道3");break;case 5:System.out.println("综合频道4");break;default:System.out.println("不能收看"+channel+"频道");}}}

public class Chinese {TV homeTV;void buyTV(TV tv){homeTV=tv;}void remoteControl(int m){homeTV.setChannel(m);}void seeTV(){homeTV.shoeProgram();System.out.println("用户回的电视"+homeTV.getChannel()+"频道");}}

13.可变参数  (int .........x)代表有多个为整型的数,x代表可变参数的代表。

14.对象的组合    一个类中有对象作为类的成员变量,这样的类创建对象那么就是对象包含对象。

15.实例成员与类成员     用关键字修饰static的称作类变量也叫静态变量否则为实例变量。

    实例变量:

     仅仅是和相应的对象相关联的变量,不同对象的实例变量互相不同。

    类变量:

      类变量是和该类创建的所有对象相关的变量,改变其中一个对象的这个类变量就改变其他对象的类变量。

 大体含义可如下图表示


Java中类的方法分为类方法(用static修饰,也叫静态方法)和实例方法(没有用static修饰,也叫非静态方法),这两种方法之间有什么区别呢?

一. 实例方法

当类的字节码文件加载到内存中时,类的实例方法并没有被分配入口地址,只有当该类的对象创建以后,实例方法才分配了入口地址。从而实例方法可以被类创建的所有对象调用,还有一点需要注意,当我们创建第一个类的对象时,实例方法的入口地址会完成分配,当后续在创建对象时,不会再分配新的入口地址,也可以说,该类的所有对象共享实例方法的入口地址,当该类的所有对象被销毁,入口地址才会消失。

二. 类方法

当类的字节码文件加载到内存,类方法的入口地址就会分配完成,所以类方法不仅可以被该类的对象调用,也可以直接通过类名完成调用。类方法的入口地址只有程序退出时消失。

因为类方法的入口地址的分配要早于实例方法的入口地址分配时间,所有在定义类方法和实例方法是有以下规则需要遵循:

1. 在类方法中不能引用实例变量

实例变量的定义类似实例方法,没有用static修饰的变量,实例变量的创建与实例方法的创建相同,也是在类的对象创建时完成,所以在类方法中是不能引用实例变量的,因为这个时候实例变量还没有分配内存地址。

2. 在类方法中不能使用super和this关键字

这是因为super和this都指向的是父类和本类的对象,而在类方法中调用的时候,这些指代的对象有可能都还没有创建。

3. 类方法中不能调用实例方法

原因同1。

与类方法相比,实例方法的定义就没有什么限制了:

1. 实例方法可以引用类变量和实例变量

2. 实例方法可以使用super和this关键字

3. 实例方法中可以调用类方法

  

区别   构造 重载 重写 

原创粉丝点击