- 栈--à对象名
- 堆--à对象属性
- 全局代码区--à所有的方法
- 访问属性或方法;一、对象.属性 对象.方法
- 类中方法的使用 一个类中可以定义多个方法,这些类内部的方法之间可以互相调用,当然在调用前也可以加上一个this关键字,表示当前类之中的方法,即:this.方法名称()
- This 表示本类中的属性 采用setXxx()和getXxx()方法对私有变量的操作
- 构造方法 1、具有与类相同的名称 2、它不含返回值类型的定义 3、它不能在方法中用return 语句返回一个值。
- 构造方法的定义; class Person{
- Public Person(){};
- }
- 构造方法调用时机 构造方法在实例化对象时被自动调用,主要用来为类中的属性初始化
- 构造方法的重载 与一般方法重载类似,只要参数的个数类类型不同即可。
- 构造方法是在对象实例化时被自动调用 对象实例化需要通过new关键字
- 对象产生的格式; 类 对象名 = new 类();
- 类():调用类中的构造方法
- 在java之中每个类必须有一个构造方法,如果没有构造方法,则会自得生成一个无参的什么都不做的构造方法,因为所有的对象产生时都必须调用构造方法 如果程序中已经明确写出了构造方法,则不会再产生一个无参的什么都不做的构造方法。
- 结论:无论采用那种方法为类中的发生赋值,最好都经过setter 方法,由setter 方法对输入的内容进行检测,而getter 方法只是将内容简单的返回。
- class Person
- {
- String name ;
- int age ;
- };
- // 要使用类需要通过对象
- public class OODemo02
- {
- public static void main(String args[])
- {
- // 格式:类 对象名 = new 类() ;
- // 声明一个对象 lxh1
- // 在方法中声明对象时必须赋值
- Person lxh1 = null ; //声明,为空。
- // 为对象实例化,开辟堆内存空间
- lxh1 = new Person() ;
- lxh1.name = "李兴华" ;
- lxh1.age = 28 ;
- Person lxh2 = new Person() ;
- lxh2 = lxh1 ; // 对象的引用传递
- lxh2.name = "魔乐先生" ;
- lxh1.age = 20 ;
- // 试着输出:
- System.out.println("姓名:"+lxh1.name) ;
- System.out.println("年龄:"+lxh1.age) ;
- System.out.println("*********************************") ;
- System.out.println("姓名:"+lxh2.name) ;
- System.out.println("年龄:"+lxh2.age) ;
- }
- };
- 结果:
- 姓名:魔乐先生
- 年龄:20
- ***********
- 姓名:魔乐先生
- 年龄:20
- //定义格式; class 类名称
- //{}
- class Person
- {
- String name;
- int age;
- public void shout()
- {
- System.out.println("姓名:" + name);
- System.out.println("年龄:" + age);
- }
- }
- //要使用类需要通过对象
- public class javaoo012
- {
- public static void main(String args[])
- {
- //格式;类 对象名 = new 类()
- //在方法中声明对象时必须赋值
- Person hyj1= new Person();
- hyj1.name = "侯亚俊";
- hyj1.age = 22;
- Person hyj2 = new Person();
- hyj2.name = "魔乐";
- hyj2.age = 20;
- //试着输出
- hyj1.shout();
- System.out.println("***************************");
- hyj2.shout();
- }
- }
- 姓名:侯亚俊
- 年龄:22
- ***************************
- 姓名:魔乐
- 年龄:20
- //类定义格式 :class 类名称 标准的命名规范:首字母大写
- class Person
- {
- String name;
- int age;
- public String shout()
- {
- this.run(); //run
- return "姓名;" + this.name + "/n年龄:" + this.age;
- //return "姓名;" +name + "/n年龄:" + age;
- }
- //this 如果没有私有变量即体现不出其作用。
- public void run()
- {
- System.out.println("早上跑步。。。");
- }
- }
- //要使用类需要通过对象
- public class javaoo012
- {
- public static void main(String args[])
- {
- //格式: 类 对象名 = new 类()
- //声明一个对象hyj 在方法中声明对象时必须赋值
- Person hyj1 = new Person();
- hyj1.name = "侯亚俊";
- hyj1.age = 22;
- Person hyj2 = new Person();
- hyj2.name = "魔乐";
- hyj2.age = 20;
- System.out.println(hyj1.shout());
- System.out.println("******************");
- System.out.println(hyj2.shout());
- }
- }
- 早上跑步。。。
- 姓名;侯亚俊
- 年龄:22
- ******************
- 早上跑步。。。
- 姓名;魔乐
- 年龄:20
- class Person
- //无论采用那种方法为类中的发生赋值,最好都经过setter 方法,由setter 方法对输入的内//容进行检测,而getter 方法只是将内容简单的返回。
- class Person
- {
- //private声明的属性只能在本类看见
- private String name;
- private int age;
- //加入一系列的setter 和 getter 方法
- public void setName(String n)
- {
- name = n;
- }
- public void setAge(int a )
- {
- if (a > 0 && a<150 )
- {
- age = a;
- }
- else
- {
- age = -1;
- }
- }
- public String getName()
- {
- return name;
- }
- public int getAge()
- {
- return age;
- }
- public String shout()
- {
- return "姓名:" + this.name + "/n年龄:" + this.age;
- }
- }
- public class javaoo012
- {
- public static void main(String args[])
- {
- Person hyj = new Person();
- hyj.setName("侯亚俊");
- hyj.setAge(22);
- System.out.println(hyj.shout());
- }
- }
- //setter ,gettter没明白什么为什么要加判定逻辑错误???
- class Person
- {
- //private声明的属性只能在本类看见
- private String name;
- private int age;
- public void setName(String n)
- {
- name = n;
- }
- public void setAge(int a )
- {
- if (a >0 && a <150)
- {
- age = a;
- }
- else
- {
- age = -1;
- }
- }
- public String getName()
- {
- return name;
- }
- public int getAge()
- {
- return age;
- }
- public String shout()
- {
- return "姓名:" + this.name + "/n年龄:" + this.age;
- }
- }
- //要使用类需要通过对象
- public class javaoo012
- {
- public static void main(String args[])
- {
- Person hyj = new Person();
- hyj.setName("侯亚俊");
- hyj.setAge(22);
- System.out.println(hyj.shout());
- }
- }
- 姓名:侯亚俊
- 年龄:22
- //在java之中每个类必须有一个构造方法,如果没有构造方法,则会自得生成一个无参的什么都不做的构造方法,因为所有的对象产生时都必须调用构造方法 如果程序中已经明确写出了构造方法,则不会再产生一个无参的什么都不做的构造方法。
- //构造方法是在对象实例化时被自动调用 对象实例化需要通过new关键字
- class Person
- {
- //private 声明的属性只能在本类看见
- private String name;
- private int age;
- Person()
- {}
- //加入一个构造方法
- Person(String n,int a)
- {
- //为类中的属性初始化
- this.setName(n);
- this.setAge(a);
- System.out.println("******构造方法被调用******");
- }
- //加入一系统的setter ,getter 方法
- public void setName(String n)
- {
- name = n;
- }
- public void setAge(int a)
- {
- if (a > 0 && a < 150)
- {
- age = a;
- }
- else
- {
- age = -1;
- }
- }
- public String getName()
- {
- return name;
- }
- public int getAge()
- {
- return age;
- }
- public String shout()
- {
- return "姓名:" + this.name + "/n年龄:" + this.age;
- }
- }
- public class javaoo012
- {
- public static void main(String args[])
- {
- Person hyj = new Person("李兴华",-22);
- Person hyj1 = new Person();
- hyj1.setName("侯亚俊");
- hyj1.setAge(22);
- System.out.println(hyj.shout());
- System.out.println("************");
- System.out.println(hyj1.shout());
- }
- }
- ******构造方法被调用******
- 姓名:李兴华
- 年龄:-1
- ************
- 姓名:侯亚俊
- 年龄:22