11.java面向对象
java 面向对象
- java 面向对象
- 类的定义
- 基本方法定义
- 带有参数的方法
- 方法的调用
- 方法调用的特殊情况
- 形参和实参
- 值传递和引用传递
- 值传递
- 引用传递
- 对象的创建
java 面向对象
类的定义
格式:修饰符 class 类名{}
// 创建类javademo01
public class javademo01 {
}
基本方法定义
方法名:见名知意,注意规范,最好采用驼峰命名法。
下面实例中:
String是返回值的数据类型
void
是返回空
// 创建类javademo01
public class javademo01 {
// main方法
public static void main(String[] args) {
}
// 定义方法,String是返回值的数据类型
public String sayHello() {
return "hello,world"; // 结束会有分号
}
}
带有参数的方法
// 创建类javademo01
public class javademo01 {
// main方法
public static void main(String[] args) {
}
// 定义方法,String是返回值的数据类型
public String sayHello() {
return "hello,world"; // 结束会有分号
}
//带有参数的方法,比大小
public int max(int a, int b) {
return a > b ? a : b; //三元运算符,a如果大则返回a,否则返回b
}
}
方法的调用
- 静态方法,带有static,一般情况下使用,类名和方法名直接调用。
- 非静态方法,不带static,必须先实例化对象再调用。
举例1:现在有两个类分别是Student和test01,在Student类中有两个方法,静态方法say,非静态方法sayHello,现在我们来调用他们。
Student
package demo01;
public class Student {
public static void say() {
System.out.println("学生说话了!");
}
public void sayHello() {
System.out.println("Hello,你好!");
};
}
test01
package demo01;
public class test01 {
public static void main(String[] args) {
// 静态方法可以直接使用类名和方法名调用
Student.say();
//非静态方法的调用
Student stu = new Student();
stu.sayHello();
}
}
方法调用的特殊情况
特殊情况方法依赖和嵌套
情况1:a依赖b方法
public static void a (){
b();
}
public static void b (){
}
这种是可以的。因为都是静态方法
public static void a (){
b();
}
public void b (){
}
这个是不行的!!!!
不行的原因是:静态方法是和类一起被加载,但是非静态方法是随着对象被创建后才存在。这里没有实例化对象,所以这个是不行的
形参和实参
package demo01;
public class test02 {
public static void main(String[] args) {
int add = test02.add(1,2);
System.out.println(add);
}
public static int add(int a, int b) {
return a + b;
}
}
值传递和引用传递
值传递
package demo01;
//传递值
public class test03 {
public static void main(String[] args) {
int a = 1;
System.out.println(a); //1
test03.change(a);
//虽然传递进去了,但是因为change没有返回值,所以还是1
System.out.println(a); //1
}
//返回值为空
public static void change(int a) {
a = 10;
}
}
引用传递
引用传递:对象,本质还是值传递
package demo01;
public class test04 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name); //null
test04.change(person);
System.out.println(person.name); //刘德华
}
public static void change(Person person){
//这里的person是一个对象
person.name = "刘德华";
}
}
//定义一个Person类,有一个属性name
class Person{
String name; //null
}
对象的创建
创建类
package demo01;
public class Student{
String name;
int age;
public void study() {
System.out.println("我叫" + this.name + "我今年" + this.age + "岁了");
}
}
创建对象
package demo01;
public class test06 {
public static void main(String[] args) {
Student xm =new Student();
xm.name = "小明";
xm.age = 13;
xm.study(); //我叫小明我今年13岁了
}
}