Java Class06

Class 06

01面向对象

面向对象的三大特征

封装(Encapsulation)
继承(Inheritance)
多态(Polymorphism)

类的两大成员

属性
方法

静态成员不能直接调用动态

静态在类“生”的时候它就生,类死它才死,类比于“古人”,古人是看不到后来人的情况的,但是后来人可以了解古人,所以动态是可以调用静态的

构造器

与类同名的函数

默认构造器:无参构造器

class A{
	public A(){//默认构造器
		System.out.print("默认构造器");
	}
}

非默认构造器:含参构造器

public B{
	public int i;
	public B(int i){//非默认构造器
		i=100;
		System.out.print(i);
	}
}

非默认构造器自动生成,在有非默认构造器时会自动代替自动生成的默认的构造器,需要使用默认构造器需要手动输入

封装:

封就是私有,private
装是get和set,get是取用,set是编写

字符串在Java中是作为常量出现的,常量是不可改变的

public class Student {
    //封
    String name;//定义姓名
    String sex;//定义性别
    int grade;//定义年级
    int age;//定义年龄
    //装
    String getName(){//取名字
        return name;
    }

    void setName(String name1){//设置名字
        name=name1;
    }

    String getSex(){//取性别
        return sex;
    }

    void setSex(String sex1){//设置性别
        sex=sex1;
    }

    int getGrade(){
        return grade;
    }

    void setGrade(int grade1){
        grade=grade1;
    }

    int getAge(){
        return age;
    }

    void setAge(int age1){
        age=age1;
    }
}

参数传递

参数传递就是将实参传递给形参的过程

public class ClassDemo01 {
    String name;//定义姓名
    String phoneNum;//定义电话号
    String address;//定义地址
    String email;//定义邮箱

    public ClassDemo01(){//定义默认构造器
    }
    public ClassDemo01(String name,String phoneNum,String email,String address){//定义非默认构造器
        //形参传递
        this.name=name;
        this.phoneNum=phoneNum;
        this.email=email;
        this.address=address;
    }

    public void printMessage(){//定义打印信息方法
        System.out.println("姓名"+name);
        System.out.println("联系电话"+phoneNum);
        System.out.println("电子邮箱地址"+email);
        System.out.println("目前居住地址"+address);
    }
    public static void main(String[] args) {
        ClassDemo01 cd=new ClassDemo01("张三","110","san@.com","昌平");//实例化对象(使用非默认构造器)
        cd.printMessage();//打印方法
    }
}

值传递和引用传递

值传递
基本类型做形参时,传递的是值而不是地址

int i1=100;
int i2;
i2=i1;

参数的值传递就是将i1的结果进给到变量i2中,i1和i2从此没有任何关系,即使改变i2的值也对i1的输出结果没有任何影响

引用传递
引用类型做形参时,传递的是地址而不是值(传递的是自己本身)

class Student{
    private int age;
    public Student(){

    }
  
    public static void main(String args[]){
        Student s1=new Student();
        s1.age=20;
        Student s2=new Student();
        s2=s1;
        System.out.println(s1.age);//输出20
        System.out.println(s2.age);//输出20

        s1.age=100;//重新给s1赋值
        System.out.println(s1.age);//输出100
        System.out.println(s2.age);//输出100
    }
}

参数的引用传递通常发生在引用类型当中,引用类型传递的是地址而不是值,所以改变s1对象的结果对s2也产生影响

其中值传递就相当于两台电视,你给一台电视换台对另一台电视不会产生任何影响

引用类型则相当于在两台电视之间加了一个遥控器(遥控器可以同时还控制两台电视),你通过遥控器给一台电视换台,对另一台电视也会产生影响。

具体参考 值传递和引用传递

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值