Java面向对象 基础知识(一)

  1. 方法的重载: 指的是方法名称相同,但是参数的类型和个数不同。通过参数的类型和个数不同来完成不同的功能。
  2. 类的定义:
class 类名称 {
    String name;  // 属性
    int age;

    public void tell(){     // 方法
        System.out.println("姓名:" + name + " " + "年龄:" + age);
    }
}
  1. 类与对象的关系:类是对某一类事物的描述,是抽象的概念上的意义。对象是实际存在于该类事物的每一个个体,是类的实例。
public static void main(String[] args) {
        /*
        创建对象
        赋值:            对象.属性
        对方法进行调用:   对象.方法
         */
        people per = null;                    //声明         开辟了栈内存空间
        per = new people();                  //实例化     使用new开辟了堆内存空间
        people per = new people();          //声明并实例化
    }
  1. 面向对象的三大特性:
    封装:对外部不可见
    继承:扩展类的功能
    多态:方法的重载,对象的多态性
  2. 方法的递归:递归调用是一种特殊的调用形式,就是方法自己调自己。
    方法是否满足条件? 是:返回调用处
    否:执行语句,递归调用
// 递归示例,从100加到1
public class addNum {
    public static void main(String[] args) {
        System.out.println(addANum(100));
    }

    public static int addANum(int nums) {
        if (nums == 1) {
            return 1;
        } else {
            return nums + addANum(nums - 1);
        }
    }
}
  1. 封装性的使用
    目的:保护某些属性和方法不被外部访问
    实现: 对属性和方法进行封装是通过关键字private进行声明的。
    Get和set可以为外部访问提供接口
class people {
    private String name;
    private int age;

    public int getAge(){
        return age;
    }

    public void setAge(int a){
        if (a > 0 && a < 150) {
            this.age = a;
        }
    }

    public String getName(){
        return name;
    }

    public void setName(String n){
        this.name = n;
    }

    public void tell() {
        System.out.println("姓名:"+ getName() +"  "+"年龄:"+ getAge());
    }
}

public class Person {
    public static void main(String[] args) {
        people per = new people();  //声明并实例化
        per.setName("Vicki");
        per.setAge(25);
        per.tell();
    }
}
  1. 匿名对象
    匿名对象就是没有名字的对象,适用于程序中只是用一次的对象。好处涉及GC垃圾回收机制,可做扩展。
Student stu = new Student();
Stu.tell();
// 以上可转换为匿名对象格式:
 new Student().tell();  //匿名对象
  1. 构造方法
    格式:
访问修饰符 类名称(){
     程序语句
}

注意: 构造方法名称必须与类名称一致
构造方法没有返回值
作用: 为类中的属性做初始化。每个类在实例化后都会调用构造方法,如果没有构造方法,程序在编译的时候会创建一个无参的,什么都不做的构造方法。
构造方法可以重载。

  1. this 关键字:
    表示类中的属性和调用方法
    调用本类中的构造方法
    表示当前对象
public class Person {
    public static void main(String[] args) {
        people per = new people("Vicki", 30);  //声明并实例化
        per.tell();

        third th = new third();
        th.prt();                    // 与下一行输出一致
        System.out.println(th);    
    }
}

class third {
    public void prt(){
        System.out.println(this);  // this表示当前对象
    }
}
class people {
    private String name;
    private int age;

    public people(String name, int age) {
        this();          // 调用本类中的构造方法,必须放在第一行
        this.name = name;        //表示类中的属性
        this.age = age;
    }

    public people(){
        System.out.println("无参数构造方法");
    }

    public int getAge(){
        return age;
    }

    public void setAge(int a){
        this.age = a;
    }

    public String getName(){
        return name;
    }

    public void setName(String n){
        this.name = n;
    }

    public void tell() {
        System.out.println("姓名:"+ getName() +"  "+"年龄:"+ getAge());
    }
}
  1. static关键字:
    使用static声明全局属性
    使用static声明方法,直接通过类名调用
    使用static方法时,只能访问static访问的属性和方法,而非static声明的属性和方法是不能使用的。

你可能感兴趣的:(Java面向对象 基础知识(一))