1.类和对象
类是一组相关属性和行为的集合(如学生类)
对象/实例 是类的具体体现(学生张三)
2.类的结构
Public class 类名{构造函数;成员变量;成员方法;代码块;内部类; }▶构造函数/构造器具体见后;
▶成员变量:定义在类中,方法体之外;局部变量一般定义在方法内部
▶成员方法:定义在类中,是属于对象的行为或功能。
3.实例化对象的方法 以及 调用成员变量/方法的写法
类名 对象名=new 类名(可能会传参);
对象名.成员变量;
对象名.成员方法(可能传参)
4.方法重载
在同一个类中,有多个方法,这些方法返回值类型相同,只是参数不同,包括参数个数,类型,顺序,这种现象就叫方法重载
public class MethodOverloading{public void function(){....;}//返回值类型不同,因此与下面的方法不属于方法重载//以下是方法重载public int function(){....}public int function(int a){....}public int function(int a,int b){....}public int function(int b,int a){....}public int function(float a,int b, int c){....} }
5.构造函数/构造器
▶构造器本质是一种方法,但是
a.名字必须与类名相同
b.没有返回值类型
▶构造器可以重载,如果“不写”构造器,会使用默认的无参构造器,如果重写了有参构造器,那么默认的无参构造器就失效不存在,所以写了有参构造器后,建议也一起顺手写一个无参的;
▶在实例化对象的时候,构造器就会自动被调用,但是如果有多个构造器,即构造器重载,会根据你传参的个数,顺序等来调用相应的构造器,而不是全部都调用。
▶优点:可以在实例化的时候直接传入数值,不用一个一个的 对象.成员变量=xxx
还有一个作用,其实等到后面才能看出,就是在private修饰的成员变量,可以直接通过有参构造器在初始化实例的时候传参,不用写setXxx,但是getXxx还是要写的
public class student {//写一个有参构造器public student(String name,char sex ){this.name=name;this.sex=sex;System.out.println("这里调用了有参构造器");System.out.println("this可以打印这个对象的地址,或者说指的是这个对象,这个对象的地址是:"+this);}//无参构造器也给加上public student(){System.out.println("这里调用了无参构造器");} }
6.this关键字
▶this关键字本质就是一个变量,可以用在方法中,来拿到当前的对象。
▶简单来说,哪个对象调用了this,this就拿哪个对象(注意操作单位是对象)
▶直接打印this,出来的结果是该对象的地址
▶作用:当方法内部的局部变量与类中方法外的成员变量同名时,this.该重名变量=对象.该变量=成员变量,否则直接 该对象 由于就近原则,会指代局部变量。(还要注意,静态方法中不允许出现this关键字,后面会详细解释)
public class student {public int age;//this关键字public void m(){int age=10;//在类的方法里面的是局部变量this.age=100;System.out.println("该对象的首地址可以用this查看,因为this是哪个对象调用this这个方法,this就拿那个对象(注意操作单位是对象,不是方法)"+this);System.out.println("不写this,重名的时候就近原则,打印的是 局部变量这个age:"+age);System.out.println("写了this,this就相当于对象,也就是打印 对象.age:"+this.age);} }public class Main{public static void main(String[] args){//实例化对象s1student s1=new student();s1.m();student s2=new student();s2.m();}
7.封装与private
▶面向对象三大特点:封装、继承、多态
▶什么是封装?
封装是指将数据和操作方法捆绑在一起,并对外隐藏内部实现的细节。主要通过private修饰符保护数据,在通过public修饰的setXxx和getXxx方法来控制访问,达到保护数据,降低耦合性的目的。
▶private关键字
这个private修饰的成员变量,在本类中可以自由赋值调用,也就是本类中可用“=”直接传值,但是在其他类中,不可以直接 对象.私有变量=x,具体的赋值方法:
方法一:
对象.setXxx(参数);
对象.getXxx();
方法二:
如果类中有有参构造器,且可以传入隐私变量,那么可以不用setXxx传入,在实例化的时候直接传入。
类 对象名=new 类(参数);
对象.getXxx();
▶具体的setXxx和getXxx的写法:
//student类中的写法 private int private_variable; public void setPrivate_variable(int a){this.private_variable=a;。。。。。; }//注意开头变量字母大写(就是这么个规定,要写成get/setXxx的形式) public int getPrivate_variable(){。。。。。。;return private_variable; }//测试类中的实例化: student a=new student(); a.setPrivate_variable(99); score=a.getPrivate_variable();有参构造器+get的写法
//学生类 public class student {//写一个有参构造器public student(String name,char sex ){this.name=name;this.sex=sex;}//无参构造器也给加上public student(){System.out.println("这里调用了无参构造器");}private int age;//隐私变量public char sex;public int getAge(){System.out.println("年龄是:"+age+"岁");return age;}public class Main{public static void main(String[] args){student b=new student(20,'男');b.getAge();//结果:年龄是:20岁 }

