JAVA基础 类与对象(2)
1.传参
参数的类型是类
public class JAVA_basic_code14 {
public static class Person {
String name;
Person() {}
Person(String name) {
this.name=name;
}
};
public static class Student{
//参数类型是Person类
static void speak(Person person){
System.out.println("My name is "+ person.name);
}
}
public static void main(String args[]){
Person person1=new Person("Stephen");
Student student=new Student();
student.speak(person1);
}
}
练习:在方法中,使参数引用指向一个新的对象
外面的引用是指向原来的对象?还是新的对象?
public class Hero {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
public Hero(){
}
public Hero(String name,float hp){
this.name = name;
this.hp = hp;
}
//复活
public void revive(Hero h){
h = new Hero("提莫",383);
}
public static void main(String[] args) {
Hero teemo = new Hero("提莫",383);
//受到400伤害,挂了
teemo.hp = teemo.hp - 400;
teemo.revive(teemo);
//问题: System.out.println(teemo.hp); 输出多少? 怎么理解?
//回答:输出-17,参数h和teemo都指向同一个对象,
//h = new Hero("提莫",383);这句语句执行之后,
//h指向一个新的对象,teemo还是指向原来的对象
}
}
图片展示
2.包
几个相同的类可以放在一个包中,便于管理
3.访问修饰符
成员变量有四种修饰符
private 私有的
package/friendly/default 不写
protected 受保护的
public 公共的
3.1类之间的关系
3.2 private
使用private修饰属性
自身:是可以访问的
同包子类:不能继承
不同包子类:不能继承
同包类:不能访问
其他包类:不能访问
3.3package/friendly/default 不写
没有修饰符即代表package/friendly/default
3.4protected 受保护的
3.5public 公共的
3.6总结
4.类属性
当一个属性被static修饰的时候,就叫做类属性,又叫做静态属性
当一个属性被声明成类属性,那么所有的对象,都共享一个值
与C++的全局变量相似
类属性有两种访问方式,一种是类名.属性名
一种是对象.属性名
package pack1;
public class Student {
//类属性
static String schoolname="Code小学";
public static void main(String args[]){
Student stu1=new Student();
Student stu2=new Student();
System.out.println(Student.schoolname);//类名.属性名访问
System.out.println(stu1.schoolname);//对象1.属性名
System.out.println(stu2.schoolname);//对象2.属性名
}
}
5.类方法
类方法: 又叫做静态方法
对象方法: 又叫实例方法,非静态方法
访问一个对象方法,必须建立在有一个对象的前提的基础上
访问类方法,不需要对象的存在,直接就访问
package pack1;
//Student类
public class Student {
//类属性
static String schoolname="Code小学";
static void GoScchool(){
System.out.println("去学校");
}
public static void main(String args[]){
//类名.方法名就可以调用
Student.GoScchool();
}
}