class Person{ //成员属性 public String name ; //访问修饰限定符:public private protected 什么都不写 public int age ; //name和age是实例成员变量 public static int count; //静态成员变量,在方法区,不管new多少个,只有一个count /*public boolean flg; public char ch;*/ //成员方法 public void eat(){ System.out.println("吃饭"); } }
实例化:
public static void main(String[]args){ //Person是类型 person是局部变量(属于引用类型) //person 1在栈上 new Person在堆上 Person person1 = new Person();//对象的实例化 Person person2 = new Person(); Person person3 = new Person(); Person person4 = new Person(); Person person5 = new Person(); System.out.println(person1); System.out.println(person2);
访问:
public static void main(String[] args) { Person person = new Person(); //实例化一个对象 System.out.println(person.age); System.out.println(person.name); person.eat(); /*System.out.println(person.flg); System.out.println(person.ch); int a; System.out.println(a); */ }
局部变量:定义在方法当中,特点是当方法结束后该变量也随之消失,因为他存储在栈上。
1.作用域:在当前方法的括号内
2.生命周期:当方法结束,方法内的局部变量也随之消失。
成员属性:(定义在类内部,方法外部的变量)
1,实例成员变量 :age name (在堆上)
2,静态成员变量 :count (在方法区)
接下来看一下如何调用:
class Person { //成员属性 public String name; //访问修饰限定符:public private protected 什么都不写 public int age; //name和age是实例成员变量 public static int count; //静态成员变量,在方法区,不管new多少个,只有一个count /*public boolean flg; public char ch;*/ //成员方法 public void eat() { System.out.println("吃饭"); } public static void func() { System.out.println("静态的方法"); } public void show() { System.out.println("姓名:" + name + "年龄" + age); } } public class TestDemo { public static void main(String[] args) { Person person1 = new Person(); person1.name = "佐助"; person1.show(); System.out.println(person1); } public static void main7(String[] args) { Person person1 = new Person(); person1.name = "佩奇001"; //person2这个引用指向了person1这个对象 Person person2 = person1; System.out.println(person2.name); } public static void main6(String[] args) { Person person1 = null; person1.name = "佩奇"; System.out.println(person1.name); }
Alt+Insert快捷键直接生产show函数
static关键字
1,修饰成员变量:静态成员变量
2,修饰成员方法:静态成员方法
3,修饰代码块:
注意:静态的方法内部不能有实例数据成员。
原因:1.静态的方法不依赖于对象,而实例数据成员需要通过实例化才能产生(new)
2.静态的方法和静态的数据->静态的优先被执行的
public String name; //访问修饰限定符:public private protected 什么都不写 public int age; //name和age是实例成员变量 public static int count; //静态成员变量,在方法区,不管new多少个,只有一个count // 加static是静态的 public final int SIZE1 = 10; //被final修饰的常量,对象,和final没关系,堆 public static final int SIZE2 = 10; //方法区
封装:
private实现封装 :
class Person2{ private String name; private int age; public void setName(String myName){ name = myName; } public void setAge(int myAge){ age = myAge; } public int getAge(){ return age; } public String getName(){ return name; } } public class TestDemo2 { public static void main(String[] args) { Person2 person2 = new Person2(); person2.setAge(15); person2.setName("卡卡西"); System.out.println(person2.getAge()); System.out.println(person2.getName()); } }
普通方法:public 返回值 方法名 (参数列表){
方法体
}
构造方法:
前提问题:实例化一个对象分为几步?
1.为对象分配内存
2.调用合适的构造方法,才会产生一个对象。
class Person2{ private String name; private int age; //alt+insert // (get and setter)快速生成 //(Constructor) //this代表当前对象的引用。 public Person2(){ System.out.println("Person2()"); } public Person2(String name){ this.name = name; System.out.println("Person2(String)"); System.out.println(this.name); } public Person2(String name,int age){ this.name = name; this.age = age; System.out.println("Person2(String,int)"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } private void func4(){ System.out.println("func()"); } public void func2(){ func4(); } } public class TestDemo2 { public static void main(String[] args) { Person2 person2 = new Person2(); Person2 person3 = new Person2("Java"); Person2 person4 = new Person2("鸣人",18); } public static void main1(String[] args) { Person2 person2 = new Person2(); person2.setAge(15); person2.setName("卡卡西"); person2.func2(); System.out.println(person2.getAge()); System.out.println(person2.getName()); } }
到此为止,下集更精彩