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","[email protected]","昌平");//实例化对象(使用非默认构造器)
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也产生影响
其中值传递就相当于两台电视,你给一台电视换台对另一台电视不会产生任何影响
引用类型则相当于在两台电视之间加了一个遥控器(遥控器可以同时还控制两台电视),你通过遥控器给一台电视换台,对另一台电视也会产生影响。
具体参考 值传递和引用传递