1,
类和对象的定义:
类就是一类对象的统称。对象就是这一类具体化的一个实例。
2,类和类的实例化
用类型创建对象的过程,称为类的实例化
1.
类只是
一个
模型
一样的东西,限定了类有哪些成员
.
2.
一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量。
创建:
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());
}
}
到此为止,下集更精彩