类和对象总结

1.this引用

this引用指向当前对象(成员方法运行时调佣该成员方法的对象),在成员方法中所有成员变量的操作,都是通过该引用去访问。

public class Test {
    public int year;
    public int month;
    public int day;
    public void setDay(int year,int month,int day){
        this.year=year;
        this.month=month;
        this.day=day;
    }
    public void printDate(){
        System.out.println(this.year+"/"+this.month+"/"+this.day);
    }

    public static void main(String[] args) {
        Test test=new Test();
        test.setDay(1999,11,1);
        test.printDate();
    }
}

2.构造方法

名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期值调用一次

(1)名字必须与类名相同

(2)没有返回类型,设置为void也不行

(3)由编译器自动调用,只调用一次

(4)构造方法可以重载

(5)this必须是构造方法中的第一条语句   

(6)  不能形成环

(7)使用public来修饰

3.封装

一般情况下,成员变量设置为private   成员方法设置为public

4.1  static修饰的成员变量,称为静态成员变量

(1)不属于某个具体的对象,是所有对象所共享的

(2)既可以通过对象访问,也可以通过类名访问,推荐使用类名访问

(3)类变量存储在方法区中

(4)生命周期伴随类的一生

4.2 static修饰的成员方法    称为 静态成员方法,是类的方法,不是某个对象所特有的

(1)不属于某个具体的对象,是类方法

(2)推荐使用  类名.静态方法名 方式调用     

(3)不能在静态方法中访问任何非静态成员变量

public class Tesdt {
    int age;
    public static String getClassRoom(){
        System.out.println(this);
     
    }
    public static String getClassRoom(){
        age=age+1;
    }

(4)静态方法中不能调用任何非静态方法,因为非静态方法有this,静态方法中无法传递this

4.3static成员变量初始化(分为就地初始化  和  静态代码块初始化)

(1)就地初始化

public static String classRoom=“java106”;

(2)静态代码快初始化

5 代码块

5.1普通代码块

5.2构造代码块   也叫  实例代码块   一般用于初始化实例成员变量

public class Student {
    private String name;
    private String gender;
    private int age;
    private String sex;
    private double score;

    public Student(){
        System.out.println("Student init()");
    }
    //实例代码块
    {
        this.name="jialin";
        this.age=20;
        this.sex="man";
        System.out.println("实例代码块");

    }
    public void show(){
        System.out.println("name:"+name+"age:"+age+"sex:"+sex);
    }

    public static void main(String[] args) {
        Student student =new Student();
        student.show();
    }
}

结果:

实例代码块
Student init()
name:jialinage:20sex:man

5.3静态代码块

使用static定义的代码块称为静态贷款块,用于初始化静态成员变量

//静态代码快
static{
    classRoom="java106";
    System.out.println("静态代码块");
}

注意:(1)静态代码快不管生成多少个对象,其只会执行一次

(2)静态成员变量是类的属性,实在 JVM加载类是开辟空间并初始化的

(3)如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行

(4)实例代码块只有在创建对象时才会执行

6.内部类

6.1实例内部类----------未被static修饰的成员内部类

(1)外部类中的任何成员都可以在实例内部类方法中直接访问

(2)实例内部类也受  public private等访问限定符的约束

(3)在实例内部类方法中访问同名的成员时,优先访问自己的,如果非要访问外部类同名的成员,必须:外部类名.this.同名成员    来访问

(4)实例内部类对象必须在先有外部类对象前提下才能创建

(5)外部类中,不能直接访问实例内部类中的成员,如果要访问必须先创建内部类的对象

6.2静态内部类---------被static修饰的内部成员类

(1)在静态内部类中只能访问外部类中的静态成员

(2)创建内部类对象时,不需要先创建外部类对象

public class OutClass {
    int a=10;
     static int b;
     public void methodA(){
        a=10;
         System.out.println(a);
    }
    public static void methodB() {
        System.out.println(b);
    }


    static class InnerClass{

        public void methodInner(){
           // a=100; 编译失败,因为a不是类成员变量
            b=200;
           // methodA();编译失败,因为methodA不是类成员方法
            methodB();
        }
    }

    public static void main(String[] args) {
    OutClass. InnerClass innerClass=new OutClass.InnerClass();
    innerClass.methodInner();
    }
}

7.对象的打印

public class Person {
    String name;
    String gender;
    int age;
    public Person(String name,String gender,int age){
        this.name=name;
        this.gender=gender;
        this.age=age;
    }

    public static void main(String[] args) {
        Person person =new Person("JIALIN","男",20);
        System.out.println(person);
    }
}

打印结果:Person@1b6d3586

如何正确打印呢?重写toString方法

public String toString(){
    return "["+name+","+gender+","+age+"]";
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值