编程语言
首页 > 编程语言> > JavaSE第六章、面向对象(上)

JavaSE第六章、面向对象(上)

作者:互联网

JavaSE第六章、面向对象(上)

一、类与对象

public class test{
    public static void main(String[] args){
    	Cat cat1=new Cat();	//创建一个猫,并赋给Cat1.
    	cat1.name="小白";
    	cat1.age=1;
    	cat1.color="白色";
    	
    	System.out.println(cat1.name+" "+cat1.age+" "+cat1.color);
    }
}

class Cat{
    String name;
    int age;
    String color;
}

二、成员方法

修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;

}

public void cal(){
}
//public:公共类
//void:无返回值
//cal:方法名
//()内:形参列表
//{}内:方法体

方法调用

Java 支持两种调用方法的方式,根据方法是否返回值来选择。

通过值传递参数

**递归调用 ***

//猴子吃桃问题
public class oop {
    public static void main(String[] args) {
        T t=new T();
        System.out.println(t.peach(1));
    }
}

class T{
    public int peach(int n) {
        if(n==10){
            return 1;
        }else if(n>=1 && n<=9){
            return ( peach(n+1)+1)*2;
        }else{
            System.out.println("无效日期");
            return -1;
        }
    }
}
//汉诺塔
public class HanoiTower {
    public static void main(String[] args){
        Tower tower=new Tower();
        tower.move(5,'A','B','C');
    }
}

class Tower{
    public void move(int num, char a, char b, char c){
        //若只有一个盘 num=1
        if(num == 1){
            System.out.println(a+"->"+c);
        }else{
            //若有多个盘,一律视为两个整体,最下面的盘(1)和上面的所有盘(num-1)
            //1.移动上面的盘 a->c->b
            move(num-1,a,c,b);
            //2.最下面的盘a->c
            System.out.println(a+"->"+c);
            //3.b上的所有盘b->a->c
            move(num-1,b,a,c);
        }
    }
}

三、overload

四、可变参数

typeName... parameterName

在方法声明中,在指定参数类型后加一个省略号(...) 。

public int sum(int... nums){
    System.out.println("nums.length");
    int res=0;
    for(int i=0;i<nums.length;i++){
        res+=nums[i];
    }
    return res;
}

五、作用域

注意事项

六、构造器/构造方法

// 一个简单的构造函数
class MyClass {
  int x;
 
  // 以下是构造函数
  MyClass() {
    x = 10;
  }
}

public class test {
   public static void main(String[] args) {
      MyClass t1 = new MyClass();
      MyClass t2 = new MyClass();
      System.out.println(t1.x + " " + t2.x);
      //输出:10 10
   }
}
// 一个简单的构造函数
class MyClass {
  int x;
 
  // 以下是构造函数(有参数的构造方法)
  MyClass(int i ) {
    x = i;
  }
}

public class ConsDemo {
  public static void main(String[] args) {
    MyClass t1 = new MyClass( 10 );
    MyClass t2 = new MyClass( 20 );
    System.out.println(t1.x + " " + t2.x);
    //输出:10 20
  }
}

七、this

java虚拟机给每个对象分配this,代表当前对象。

访问成员方法的语法:this.方法名(参数列表);
访问构造器的语法:this(参数列表);⚠️只能在构造器内使用(即只能再构造器中访问另外一个构造器,且必须放在第一条语句。)

注意事项

继承中会有更多this的细节。

//小练习:比较两个人是不是同一个人
public class thisTest {
    public static void main(String[] args) {
        Person p1 = new Person("mary", 28);
        Person p2 = new Person("tom", 18);
        System.out.println(p1.compare(p2));
    }
}

class Person{
    String name;
    int age;

    public Person(String name, int age){
        this.name=name;
        this.age=age;
    }

    public boolean compare(Person p){
        return this.name.equals(p.name) && this.age==p.age;
    }
}

标签:int,class,面向对象,参数,第六章,MyClass,JavaSE,方法,public
来源: https://www.cnblogs.com/CathyWong/p/16146723.html